PHP错误显示问题, 错误日志去哪儿了
作者:admin 日期:2017-08-10
相信很多做PHP开发的同学都会遇到一些PHP报错的情况. 有时候这些报错显示在页面上,有时候显示在日志文件里. 有时候可能会为一个500错误找半天, 却还是没有找到报在在哪里.
下面就根据地我一点点粗浅的认识总结一下这个问题.
开启error_reporting
要想看到错误, 第一件是就是开启error_reporting, 否则所有的错误都不会被报告. 开启的代码为:
error_reporting(E_ALL);
开启了错误报告之后, 我们可能在下面三个地方看到这个错误信息.
- 网页页面上.
- nginx日志中.
- php错误日志中.
display_errors
display_errors是php.ini当中的一个开关, 用于控制是否在页面上显示错误信息, 所以如果开启了这个开启, 所有的错误将显示在页面(200状态)上, 而不会显示到其他两个地方. 所以后面我们讨论的都是display_errors关闭的情况.
log_errors && error_log
log_errors也是php.ini里面的一个开关, 用户控制是否记录错误. 当php遇到错误, 并且log_errors开启时, php会尝试记录错误, 并且返回一个500错误. 那么记录到哪里去呢? 由error_log这个设置的值决定.
当error_log可写时, 这个错误会写入到error_log指定的文件当中. 当error_log指定的文件不可写时, php会向std_err标准错误输出错误信息, 而这个信息会被nginx拿到. 如果此时nginx的错误日志处于开启状态, 这个错误日志会写入到nginx的错误日志中. 如果nginx的错误日志没有开启, 那这个日志就没有了, 不会被记录下来. 我们也就没有地方去找这个日志了.
欢迎补充.
评论: 0 | 查看次数: 101863