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 上设置了一个简单的网络服务器,其中包含 php、mysql、nginx 和 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 问题无法调用文件夹中的其他 php 文件
如果正在进行流式下载,Nginx PHP-FPM无法提供请求