PHP-FPM + NGINX 空白页面问题的解决
架设了一台服务器,采用PHP-FPM + NGINX结构,测试时返回空白页面,HTTP状态码200。
访问的文件只要是.php结尾的,无论存在与否,返回状态码均为200,页面内容一律空白。
特意创建了一个PHP文件,里面只有一行代码<?php phpinfo(); ?>,仍然不行,这下也排除了短标签问题。
所有错误日志打开,php.ini、php-fpm.conf、nginx.conf都设置开启日志。
查看日志,没有一处相关的错误报告,nginx日志、php日志、php-fpm日志、系统日志全部检查过,没有任何有用的提示。
究竟是PHP-FPM出问题了还是NGINX设置的问题?查了很多资料都没找到解决办法。
找到最后,都快想放弃了。这时抱着试试看的心态,测试了一个文本文件,返回结果是”403 Forbidden”。
网上一查,原来是权限问题,运行命令修改权限:
Chmod –R 755 /var/www/html/
再次测试,文本文件正常显示,又看到希望了。
再测试phpinfo文件,内容正常打印,曙光终于出现。
我突然想起我所用的框架中很多处函数调用都采用了”@” 符号(at符号)来抑制错误提示。
会不会是这个原因呢?我清理了代码中所用函数调用代码的”@”标记,再次运行我的代码,终于出现错误提示了,一个fatal error,原来是mysql模块没装上。
“@”符号真的害死人啊,我花了那么多时间才找出了错误的原因,我简直想找写这个框架的人来痛扁一顿。
在此给各位同学提醒一下,如无必要,最好不要在PHP函数调用前加”@”符号,错误的抑制完全可以通过php.ini和.htaccess完成。
当然,如果php.ini和.htaccess权限都没有,那么也就只有忍了。