PHP错误显示问题, 错误日志去哪儿了

相信很多做PHP开发的同学都会遇到一些PHP报错的情况. 有时候这些报错显示在页面上,有时候显示在日志文件里. 有时候可能会为一个500错误找半天, 却还是没有找到报在在哪里.

下面就根据地我一点点粗浅的认识总结一下这个问题.

开启error_reporting

要想看到错误, 第一件是就是开启error_reporting, 否则所有的错误都不会被报告. 开启的代码为:

error_reporting(E_ALL);

开启了错误报告之后, 我们可能在下面三个地方看到这个错误信息.

  1. 网页页面上. 
  2. nginx日志中.
  3. 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的错误日志没有开启, 那这个日志就没有了, 不会被记录下来. 我们也就没有地方去找这个日志了. 

欢迎补充.

 



文章来自: 本站原创
Tags:
评论: 0 | 查看次数: 101863