php开启错误日志 && 慢日志

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33862644/article/details/85634807

错误日志

前言:
对于我们做php开发的人员,上了生产环境,一定要把相关debug,display_errors错误提示等关掉。谁还难免不犯个错呢?这样能防止非致命性报错下,导致项目路径、数据库等信息泄漏。


问:那么问题来了,我们在生产该如何查看php等相关错误呢?
答:记录到错误日志里。error.log(或直接发送到syslog)

下边就如何配置和查看日志作出简单叙述。

一.相关配置

需要将php.ini中的配置指令做如下修改:
1. error_reporting  =  E_ALL             #将会向PHP报告发生的每个错误  (配置文件中已经给提示了,见下图)


2. display_errors = Off                 #不显示满足上条 指令所定义规则的所有错误报告,设置成off发生错误时,浏览器报500,不显示具体错误(具体错误不会输出到浏览器上,用户也就看不到。会写到第5步的错误文件中,非正式环境全设置成on更方便) 
3. log_errors = On                    #开启错误日志  
4. log_errors_max_len = 1024               #设置每个日志项的最大长度  
5. error_log =/usr/local/error.log            #指定产生的 错误报告写入的日志文件位置 
PHP的配置文件按上面的方式设置完成以后,并重新启动Web服务器。这样,在执行PHP的任何脚本文件时,所产生的所有错误报告都不会在浏览器中显示,而会记录在自己指定的错误日志/usr/local/error.log中。此外,不仅可以记录满足error_reporting所定义规则的所有错误,


而且还可以使用PHP中的error_log()函数,送出一个用户自定义的错误信息,写入到error_log中。或故意发生个错误,如 运行echO,触发的错误就会写到php的错误日志中。

注意:在linux上开启的话,/usr/local目录要有写入权限,不然触发错误也不会生成文件。如 你登录linux用的是root,php的用户是www,此时权限应该是757。

二.查看存放地址

1.命令
 echo '<?php phpinfo(); ?>' | php 2>&1 |grep -i error_log
或者在一个php文件中输出 phpinfo();查看错误日志存放位置

2.通过php.ini配置文件来查看错误日志存放地址
vi /etc/php.ini 

3.查看日志:
tail -f -50 /var/php_errors.log


除了一般的错误输出之外,PHP还允许向系统syslog中发送定制的消息。虽然通过前面介绍的error_log()函数,也可以向syslog中发送定制的消息,但在PHP中为这个特性提供了需要一起使用的4个专用函数。这里就不介绍了。

慢日志开启

项目用php开发,在生产运行的过程中,应该一段时间监测下php脚本运行状态,哪些php进程速度太慢,有哪些错误日志。
问:如何来查看检测比较慢的php脚本呢?
答:查看php-fpm慢日志。

1.先查找到配置文件存放地址

find / -name php-fpm.conf

vi /usr/local/php/etc/php-fpm.conf

打开看看你的慢日志是否开启,或者开启的慢日志存放在哪里。
对应的地址都换成你自己的即可。

2.如果没有开启慢日志查询(默认是关闭的),先开启

去掉request_slowlog_timeout 、slowlog的前缀分号';'

slowlog 的路径,操作系统如若不会自动创建,自己手动创建
设置request_slowlog_timeout =1;  #执行时间超过1s的脚本,将记录到slowlog里。
重启php-fpm

3.观察慢日志信息

tailf /var/log/php-fpm-slowlog.log  #打开慢日志
开启后,如果有脚本执行超过指定的时间,就会在指定的日志文件中写入类似如下的信息:


日志说明:
script_filename 是入口文件
curl_exec() : 说明是执行这个方法的时候超过执行时间的。
exfilter_curl_get() :说明调用curl_exec()的方法是exfilter_curl_get() 。
每行冒号后面的数字是行号。


开启后,在错误日志文件中也有相关记录。如下:
 

[19-Dec-2016 15:55:37] WARNING: [pool www] child 18575, script '/home/web/htdocs/sandbox_canglong/test/tt.php' (request: "GET /test/tt.php") executing too slow (1.006222 sec), logging 
[19-Dec-2016 15:55:37] NOTICE: child 18575 stopped for tracing 
[19-Dec-2016 15:55:37] NOTICE: about to trace 18575 
[19-Dec-2016 15:55:37] NOTICE: finished trace of 18575

https://blog.csdn.net/ty_hf/article/details/55504719   #apache的日志(未测试)

猜你喜欢

转载自blog.csdn.net/qq_33862644/article/details/85634807
今日推荐