php错误处理之错误记录日志

在一些公司里面,有专门的日志收集系统,日志收集系统会在背后默默的帮你收集错误、警告、提示。

也有些公司没有专门的日志收集系统,通过文件来记录服务器当中的运行日志。

其中:PHP的错误,警告这些是必须要收集的。

那么问题来了,不让用户看到,设置好错误报告级别,如何讲错误收集到日志系统中呢?

这里需要使用到php.ini的相关配置项,这两个配置项为:

参数配置项说明
log_errorsOn/off是否开启日志记录
log_errors_max_len整型,默认1024单行错误最大记录长度
error_logsyslog或者指定路径错误日志记录在什么地方

说明:

  1. 在表格中的log_errorslog_errors_max_len非常好理解。
  2. error_log指定讲错误存放在什么路径上,配置项中的syslog可能有点不太好理解。syslog是指系统来记录。windows系统在电脑的日志收集里面,linux默认在:/etc/syslog.conf

【扩展】若Linux系统启动或修改了日志收集,可能存储在第三方专用的日志收集服务器中。

此外,PHP还为我们专门准备了一个自定义的错误日志函数:

bool error_log (string $错误信息[int $错误消息类型 = 0 [string $存储目标]])

这个函数可以把错误信息发送到web服务器的错误日志,或者到一个文件里。

常用的错误消息类型:

类型说明
0发送至默认的error_log指定位置
1发送到指定的邮件位置(不熟悉可以不用看)
3发送到指定的文件位置

--------------------

补充部分:

--------------------

看到有说:

nginx只对页面的访问做access记录日志。不会有php的error log 信息。nginx把对php的请求发给php-fpm fastcgi进程来处理,默认的php-fpm只会输出php-fpm的错误信息,在php-fpm的errors log里也看不到php的errorlog。
原因是php-fpm的配置文件php-fpm.conf中默认是关闭worker进程的错误输出,直接把他们重定向到/dev/null,所以我们在nginx的error log 和php-fpm的errorlog都看不到php的错误日志。
所以我们要进行如下的设置就能查看到nginx下php-fpm不记录php错误日志的方法

修改 php-fpm.conf 文件,添加(或修改)如下配置:
  [global]
  error_log = log/error_log

  [www]
  catch_workers_output = yes

修改 php.ini 文件,添加(或修改)如下配置:
  log_errors = On
  error_log = "/usr/local/lnmp/php/var/log/error_log"
  error_reporting=E_ALL&~E_NOTICE

----------------------------------------

个人测试后发现:

-----------------------------------------

根据个人的测试,发现,php-fpm中的www.conf文件中的:

[www] catch_workers_output = yes

设置yes或者on 没有起任何作用

对于nginx 和php-fpm 和php三者来说:

php.ini中设置了error_log的保存路径后,如果这里设置的路径为无效(自带的 error_log =syslog 测试后是无效的路径,如果设置了如 error_log = /var/log/php.error.log 这样的路径,请保证这个文件确实存在并且有写入权限,否则仍然是无效的路径,php进程不会自动创建这个文件的),那么错误就会被打印到nginx的 error_log所指向的路径中!如果设置的路径有效,则打印到这里设置的地方!

php-fpm在记录错误的这个环节并没有启动任何作用!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值