PHP 日志的几个配置

日志是一个可靠系统的重要保障之一。完整的日志记录,能够极大地帮助我们分析问题,排查错误。
在这里,介绍一下 PHP 的日志相关的一些配置和内容。

本文以 PHP 7 版本作为描述的基础。

基本

在 php.ini 配置文件中,有一个名为 display_errors 的配置,这个配置决定了是否显示错误信息。一般来说,在开发测试阶段,这个配置应该保持 On 以方便查看问题;当在线上时,这个应设置为 Off ,避免向用户显示出内部具体的错误信息。

比如我们直接在 CLI 里执行 php -r "echo 1 / 0;" ,当配置了 On 时,即可看见这样的错误信息:

➜ php -r "echo 1 / 0;"

Warning: Division by zero in Command line code on line 1

Call Stack:
    0.0001     349088   1. {main}() Command line code:0

INF

当然,如果我们在 Web 中运行该代码,也会显示类似错误。

实践

那当我们在线上将 display_errors 配置设为 Off 时,我们又怎样跟踪错误呢?这个时候,就要用到下面两个配置:

  • log_errors ,表示是否记录错误日志,默认为 Off 。当该值为 On 时,将使用下面的配置 error_log 的值作为日志文件。
  • error_log,指定日志文件。执行 PHP 代码的用户,需要有该文件的写权限。在 CLI 里执行 PHP 的用户与 PHP-FPM 的执行用户可能不同,请特别留意因为不同用户产生的文件写权限的问题。

现在我们把 log_error 设为 Onerror_log 设为 /tmp/log/php_errors.log,然后再次在 CLI 里执行 php -r "echo 1 / 0;",即可在指定的文件中查看到相关错误信息。

对于该日志文件,如果有需要可以使用 logrotate 来实现日志切割。

PHP-FPM

当我们使用 PHP-FPM 来运行 PHP 的时候,就要额外留意 FPM 里的配置。

  • catch_workers_output ,表示是否把 fpm worker 的 stderr 和 stdout 重定向错误日志中;
  • error_log,表示日志文件。

一般来说,默认配置情况下即可实现日志的记录。

参考

    原文作者:Devonon
    原文地址: https://www.jianshu.com/p/1c64dd0ea276
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞