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

事情是这样子的:

前一段时间,网站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了。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值