我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文从php.ini配置文件的视角,来理解一下错误日志相关的选项。就是说没有程序编程干预的情况下,系统自动记录错误日志的方式。当然,各大php框架都有自己的记录日志的方式。所以,这种系统自动记录的日志,对于极简的php系统还是有些意义的。

苏南大叔:php教程,如何理解php.ini中错误日志相关的选项? - 错误日志相关选项
php教程,如何理解php.ini中错误日志相关的选项?(图4-1)

苏南大叔的“平行空间笔记本”博客,记录苏南大叔的代码编程经验总结。本文测试环境:win10nginx@1.15.11php@8.2.10-nts

php.ini在哪里

还是老生常谈,php.ini文件在哪里。可以通过下面的命令,还查找其位置。

php --ini

参考文章:

php.ini修改

“显示错误”是显示给使用者,“记录日志”是提供给代码维护者。两者的受众是不同的。所以,不必混为一谈。

无论php.ini中是否开启了显示错误:

display_errors = On
display_startup_errors = On

或者

display_errors = Off
display_startup_errors = Off

本文关心的是:记录错误的日志文件,与是否显示错误给用户无关。

error_reporting = E_ALL
log_errors = On
error_log = php_errors.log
error_log_mode = 0644
log_errors_max_log = 1024

其中,

  • log_errors_max_log选项,在php8系列里面已经取消了,写上也没有啥效果的。1024的意思,日志文件最大是1M。(不是绝对的,有特例可以突破这个限制)。【这一条待续2个内容】
  • error_log_mode选项,是php8里面新加的。是指的日志文件的权限问题,默认就是最安全的0644。个人感觉也没有啥设置的必要性吧?
  • 错误信息可以不display,但是一定要reporting

error_log 选项一:不做设置

;error_log = php_errors.log
;error_log = syslog

不做设置的话,就会转到对应的配套软件(比如nginxapache等)去处理。因为苏南大叔这里的测试环境是nginx。那么,php程序里面的错误信息,默认是存放到了nginx/logs/error.log文件里面了。

苏南大叔:php教程,如何理解php.ini中错误日志相关的选项? - 默认日志文件
php教程,如何理解php.ini中错误日志相关的选项?(图4-2)

error_log 选项二:日志实体文件

error_log = php_errors.log

苏南大叔:php教程,如何理解php.ini中错误日志相关的选项? - 网站根目录
php教程,如何理解php.ini中错误日志相关的选项?(图4-3)

error_log文件,默认值是php_errors.log

  • 该文件默认是被生成在网站的根目录下面的。【安全隐患】
  • 也可以设置称为全路径,注意保证日志文件权限可写。
error_log = E:\php_errors.log

error_log 选项三:系统日志

error_log = syslog

设置成syslog后,php日志就会被写入到操作系统层面上的日志里面了。苏南大叔的测试环境是win10,查看相关日志的方式是:我的电脑=>管理=>计算机管理=>事件查看器。

苏南大叔:php教程,如何理解php.ini中错误日志相关的选项? - 系统日志
php教程,如何理解php.ini中错误日志相关的选项?(图4-4)

如果无法关闭“计算机管理”界面,可以参考:

相关文章

结束语

这里仅仅是从php.ini的视角来看待系统错误日志的使用方式。当然,大多数使用框架的情况下,因为自建日志体系的缘故。这些php.ini里面的选项,也是没有作用的。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php