https://stackoverflow.com/questions/15423500/nginx-showing-blank-php-pagesphp
For reference, I am attaching my location
block for catching files with the .php
extension:html
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
因为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;php-fpm
而后重启一下服务:网站
service php5-fpm reload service nginx reload //从新加载各项配置改动。
spa
https://wildlyinaccurate.com/solving-502-bad-gateway-with-nginx-php-fpm/rest
升级php-fpm后,个人基于PHP的站点返回“502 Bad Gateway”错误。当php5-fpm软件包从新配置本身以侦听不一样的套接字时,就会发生这种状况。这是你如何解决它。code
检查以确保php-fpm正在运行 ps aux | grep php
- 若是你在输出中看不到任何php-fpm进程,那么你可能须要从新安装php-fpm。若是php-fpm运行正常,那么跳过第一步。htm
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
一切都应该正常工做。