PHP 无法在带有 nginx 和 php-fpm 的 Amazon EC2 服务器上的页面内工作

Posted

技术标签:

【中文标题】PHP 无法在带有 nginx 和 php-fpm 的 Amazon EC2 服务器上的页面内工作【英文标题】:PHP not working inside page on Amazon EC2 server with nginx and php-fpm 【发布时间】:2017-03-12 03:03:45 【问题描述】:

我使用this tutorial 在 Amazon EC2 上设置了一个简单的网络服务器,其中包含 phpmysqlnginx 和 php-fpm。一切似乎都已启动并运行,html 页面打开得很好。我的 phpinfo() 也可以正常工作,将服务器 API 显示为 FPM/FastCGI 并将 php-fpm 显示为活动的。到目前为止一切顺利。

我现在将我的一个旧网站复制到新服务器并打开 index.php 页面,该网站使用 php 并且在我的旧服务器(顺便说一下,它在没有 php-fpm 的情况下运行 Apache)上运行良好。它打开,显示正常,但继续进入应用程序的 Twitter 登录按钮显示此链接:

<? echo $content;?>

而不是像在实时网站上那样显示“redirect.php”。所以不知何故,页面中的 php 似乎不起作用。使用干净的 nginx error.log,重新加载此页面会在日志中生成以下输出:

2016/10/29 12:32:58 [error] 2936#0: *1 FastCGI sent in stderr: "PHP message: PHP Warning:  session_start(): open(/var/lib/php/session/sess_45g3uvcilj8913naoa1nrenfn3, O_RDWR) failed: Permission denied (13) in /var/www/html/*****/index.php on line 2
PHP message: PHP Notice:  A session had already been started - ignoring session_start() in /var/www/html/*****/index.php on line 6
PHP message: PHP Notice:  Undefined index: access_token in /var/www/html/*****/index.php on line 15" while reading response header from upstream, client: *****, server: *****, request: "GET /tlm/ HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/php-fpm.sock:", host: "*****"

我猜测权限被拒绝错误可能是原因,但我很难弄清楚原因。特别是因为 phpinfo() 文件工作得很好。正如您可能知道的那样,在这些事情上我是个新手。

关于我的配置:nginx.conf 中的用户设置为 nginx,/etc/php-fpm.d/www.conf 至少包含以下内容:

listen = /var/run/php-fpm/php-fpm.sock
listen.allowed_clients = 127.0.0.1
listen.owner = nginx
listen.group = nginx
listen.mode = 0664
user = nginx
group = nginx

所以,我什至不确定我是否有比“为什么这个页面不起作用?”更具体的问题。但我希望有人能够提供帮助。

我见过很多类似的问题,有时在导致网络服务器内容成为问题的某些文件夹上没有 +x,但我已经验证并且世界上每个文件夹都有 +x 导致我的webserver 文件夹,所以这不应该是问题。

谁能指出我正确的方向?提前感谢您的耐心:)

【问题讨论】:

新 EC2 服务器上的 PHP 是否启用了 短标签。如果没有启用它并检查。 chown -R nginx:nginx /var/www nginx.conf 中你应该有:user nginx; 谢谢@Haridarshan,确实是这样!短标签已关闭,我启用了这些标签,然后我花了一些时间才发现我还需要重新启动 php-fpm,而不仅仅是 nginx。多哈。非常感谢! 【参考方案1】:

看来你新安装的php不允许短标签http://php.net/manual/en/ini.core.php#ini.short-open-tag

【讨论】:

以上是关于PHP 无法在带有 nginx 和 php-fpm 的 Amazon EC2 服务器上的页面内工作的主要内容,如果未能解决你的问题,请参考以下文章

Nginx + php-fpm 随机挂起

nginx+php-fpm 问题无法调用文件夹中的其他 php 文件

如果正在进行流式下载,Nginx PHP-FPM无法提供请求

使用 docker 在 CentO 上设置 PHP-FPM、Nginx、Mariadb

nginx 无法解析php

有没有好的wordpress + php-fpm + nginx + mysql 内存优化技巧?