https://stackoverflow.com/questions/15423500/nginx-showing-blank-php-pages
For reference, I am attaching my location
block for catching files with the .php
extension:
location ~ \.php$ {
include /path/to/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}
Double-check the /path/to/fastcgi-params
, and make sure that it is present and readable by the nginx user.
由于nginx与php-fpm之间的一个小bug,会导致这样的现象: 网站中的静态页面 *.html 都能正常访问,而 *.php 文件虽然会返回200状态码, 但实际输出给浏览器的页面内容却是空白。 简而言之,原因是nginx无法正确的将 *.php 文件的地址传递给php-fpm去解析, 相当于php-fpm接受到了请求,但这请求却指向一个不存在的文件,于是返回空结果。 为了解决这个问题,需要改动nginx默认的fastcgiparams配置文件: vi /etc/nginx/fastcgi_params 在文件的最后增加两行:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
然后重启一下服务:
service php5-fpm reload service nginx reload //重新加载各项配置改动。
https://wildlyinaccurate.com/solving-502-bad-gateway-with-nginx-php-fpm/
升级php-fpm后,我的基于PHP的站点返回“502 Bad Gateway”错误。当php5-fpm软件包重新配置自己以侦听不同的套接字时,就会发生这种情况。这是你如何解决它。
检查以确保php-fpm正在运行 ps aux | grep php
- 如果你在输出中看不到任何php-fpm进程,那么你可能需要重新安装php-fpm。如果php-fpm运行正常,那么跳过第一步。
sudo apt-get remove php5 php5-cgi php5-fpm
sudo apt-get install php5 php5-cgi php5-fpm
这里需要注意的是,安装软件包的顺序很重要。在过去,我发现以错误的顺序安装它们会导致包配置错误。
接下来,获取php-fpm以侦听正确的主机/端口。在/etc/php5/fpm/pool.d/www.conf
变化的listen
值以匹配fastcgi_pass
您的Nginx的配置位置。例如,我改变了我的意见:
listen = /var/run/php5-fpm.sock
至:
listen = 127.0.0.1:9000
如果您正在配置php-fpm以侦听Unix套接字,则还应检查套接字文件是否具有正确的所有者和权限。虽然我不推荐它,但您可以简单地为所有人提供读写权限sudo chmod go+rw /var/run/php5-fpm.sock
。
重启php-fpm,sudo service php5-fpm restart
一切都应该正常工作。