nginx+php-fpm配置后页面显示空白的解决方法
nginx+php-fpm配置后页面显示空白的解决方法 - 高飞的专栏 - 博客频道 - .NET http://blog.csdn.net/feiniao8651/article/details/52768911
OS: Ubuntu 15.04
由于nginx与PHP-fpm之间的一个小bug,会导致这样的现象: 网站中的静态页面 *.html 都能正常访问,而 *.php 文件虽然会返回200状态码, 但实际输出给浏览器的页面内容却是空白。 简而言之,原因是nginx无法正确的将 *.php 文件的地址传递给php-fpm去解析, 相当于php-fpm接受到了请求,但这请求却指向一个不存在的文件,于是返回空结果。 为了解决这个问题,需要改动nginx默认的fastcgiparams配置文件: vi /etc/nginx/fastcgi_params 在文件的最后增加两行:
[plain] view plain copy fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; (bluer: Ubuntu14.04实际测试, 只需这一句即可) fastcgi_param PATH_INFO $fastcgi_script_name;
然后重启一下服务:
[plain] view plain copy service php5-fpm reload service nginx reload //重新加载各项配置改动。 参考:
基于ubuntu 14搭建nginx+php+MySQL环境
Linux nginx php显示空白页
第二种可能:
网站目录没有执行权限, 这可以在nginx 的日志 ( /var/log/nginx/error.log ) 中看到这种报错:
2017/07/10 10:20:37 [error] 4331#0: *1 open() "/home/src/test8001/favicon.ico" failed (13:Permission denied), client: 192.168.8.111, server: test.com, request: "GET /favicon.ico HTTP/1.1", host: "192.168.8.50:8001", referrer: "http://192.168.8.150:8001/adminer-4.2.5.php
解决办法:
在网站根目录下执行:
sudo chmod -R a+rwx .
即可
第三种可能:
nginx和php-fpm的交互端口不匹配, 正确的配置方式应该是:
nginx的配置文件中 ( /etc/nginx/sites-available/default )
server { listen 8001; root /home/src/test8001; index index.php index.html index.htm; location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; #fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; } } php5-fpm的配置文件 ( /etc/php5/fpm/pool.d/www.conf ) 中listen项目应该如下: #listen = unix:/var/run/php5-fpm.sock; listen = 127.0.0.1:9000;
其中上述红色和蓝色字体配置项需要一一对应相等, 且需要注释其中一个颜色, 让另一个颜色生效
注意: 上面红色字体的路径是linux系统下的socket路径, 相关介绍可以看 配置 php-fpm 监听的socket - 牛顿的小脑 - 博客园 http://www.cnblogs.com/oxspirt/p/5109249.html