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,表示日志文件。

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

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Welcome 目前网络上充斥着大量的陈旧信息,让PHP新手误入歧途,传播着错误的实践和糟糕的代码,这必须得到纠正...
    layjoy阅读 21,730评论 7 118
  • 对于线上的项目来说,错误日志和访问日志是至关重要的。学会如何分析日志找出问题是一个必备技能。本文就谈谈关于PHP的...
    Ddaidai阅读 6,348评论 3 3
  • 更改ip和dnsVi /etc/sysconfig/network-scripts/ifcfg-eth0vi /...
    Xwei_阅读 1,861评论 0 3
  • php.ini设置,上传大文件: post_max_size = 128Mupload_max_filesize ...
    bycall阅读 6,834评论 3 64
  • 昨天因为儿子迟回家,老公很生气,说以后不管他了,给了他三百块钱让他自己在这个房子住,我们去另外一处房子住...
    天天好运来1978阅读 276评论 2 3