php日志error错误日志查看
前言:
对于php开发的人员,上了生产环境,一定要把相关debug,display_errors错误提示等关掉。谁还难免不犯个错呢?这样能防止非致命性报错下,导致项目路径、数据库等信息泄漏。
问:那么问题来了,我们在生产该如何查看php等相关错误呢?
答:记录到错误日志里。error.log(或直接发送到syslog)
下边就如何配置和查看日志作出简单叙述。
一.相关配置
需要将php.ini中的配置指令做如下修改:
- error_reporting = E_ALL 将会向PHP报告发生的每个错误
- display_errors = Off 不显示满足上条?指令所定义规则的所有错误报告
- log_errors = On 开启错误日志
- log_errors_max_len = 1024 设置每个日志项的最大长度
- error_log = /var/php_errors.log 指定产生的错误报告写入的日志文件位置
- ;error_log=syslog 系统日志
PHP的配置文件按上面的方式设置完成以后,并重新启动Web服务器。这样,在执行PHP的任何脚本文件时,所产生的所有错误报告都不会在浏览器中显示,而会记录在自己指定的错误日志/usr/local/error.log中。此外,不仅可以记录满足error_reporting所定义规则的所有错误,而且还可以使用PHP中的error_log()函数,送出一个用户自定义的错误信息。
二.查看存放地址
- 通过php.ini来查看错误日志存放地址
echo '<?php phpinfo(); ?>' | php 2>&1 |grep -i error_log
或者在一个php文件中输出 phpinfo();查看错误日志存放位置
-
查看日志存放位置
vi /etc/php.ini
-
查看日志:
tail -f -50 /var/php_errors.log
除了一般的错误输出之外,PHP还允许向系统syslog中发送定制的消息。虽然通过前面介绍的error_log()函数,也可以向syslog中发送定制的消息,但在PHP中为这个特性提供了需要一起使用的4个专用函数。这里就不介绍了。
三.实例排查错误
问题:h5ai文件管理系统打开不显示文件
排查:开启PHP5.6里php.ini的错误日志。发现如下错误:
[12-Dec-2018 18:02:52 PRC] PHP Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. in Unknown on line 0
[12-Dec-2018 18:02:52 PRC] PHP Warning: Cannot modify header information - headers already sent in Unknown on line 0
查看php5.6里的php.ini设置为
;always_populate_raw_post_data = -1
取消;
,h5ai系统文件显示正常。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。