您的位置:首页 > 运维架构 > Nginx

nginx 错误日志 没有记录 PHP错误的原因

2012-09-21 09:52 676 查看
事情是这样子的:

前一段时间,网站php出错后,具体的错误信息,没有显示出来,以为是输出到NGINX的错误日志里了,但是NGINX的错误日志没有PHP的错误信息,只有一些系统错误。

搞了很久,最后是通过改php-fpm.conf 配置,将PHP错误直接输出在浏览器里。

一开始我是改php.ini 里 的:

display_errors=On

但是没有效果。后来测试,原来是php-fpm.conf里的配置会覆盖php.ini。这个只能在php-fpm.conf里改。

但是我想不明白 为什么nginx里的错误日志 没有记录PHP的,且PHP出错时返回的http状态码是200,而不是500?

后来我整理了php-nginx的流程

在PHP 5.3.8及之前的版本中,通过FastCGI运行的PHP,在用户访问时出现错误,会首先写入到PHP的errorlog中

如果PHP的errorlog无法写入,则会将错误内容返回给FastCGI接口,然后nginx在收到FastCGI的错误返回后记录到了nginx的errorlog中

在PHP 5.3.9及之后的版本中,出现错误后PHP只尝试写入PHP的errorlog中,如果失败则不会再返回到FastCGI了

我用的是5.2版本,那就是 php输出的错误日志 给其他应用截断了,造成错误信息 没有输出到nginx的错误日志里

经过验证,原来是给xdebug截断了,关掉xdebug,日志恢复正常,PHP出错也是显示500了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php nginx 浏览器 测试