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的错误日志里了,但是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了。
相关文章推荐
- 实现Nginx中使用PHP-FPM时记录PHP错误日志的配置方法
- 实现Nginx中使用PHP-FPM时记录PHP错误日志的配置方法
- 实现Nginx中使用PHP-FPM时记录PHP错误日志的配置方法
- 实现Nginx中使用PHP-FPM时记录PHP错误日志的配置方法
- nginx php-fpm记录php错误日志怎么配置
- [转]EntityFramework的多种记录日志方式,记录错误并分析执行时间过长原因(系列4)
- 记录PHP错误日志
- 记录PHP错误日志 display_errors与log_errors的区别
- PHP中错误与异常的日志记录用法分析
- PHP错误日志记录:display_errors与log_errors的区别
- PHP的日志记录-错误与异常记录
- nginx php-fpm 输出php错误日志(转)
- 【错误记录】python logging日志打印俩次的原因
- PHP 错误与异常 笔记与总结(5)配置文件中与错误日志相关的选项 && 将错误记录到指定的文件中
- PHP错误日志记录功能,一般用于调试BUG
- 记录PHP错误日志 display_errors与log_errors的区别
- PHP 捕捉错误,记录到日志
- nginx php-fpm 输出php错误日志
- 关于网上流传的nginx文档的1个错误(nginx+tomcat日志记录真实IP)
- nginx php-fpm 输出php错误日志