千家信息网

PHP错误日志如何配置和使用

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,小编给大家分享一下PHP错误日志如何配置和使用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!对于 PHP 开发者来说,一旦
千家信息网最后更新 2025年02月01日PHP错误日志如何配置和使用

小编给大家分享一下PHP错误日志如何配置和使用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

对于 PHP 开发者来说,一旦某个项目投入使用,应该立即将配置文件 php.ini 中的 display_errors 选项关闭,以免因为这些错误所透露的路径、数据库连接、数据表等信息而遭到黑客攻击。

但是任何一个项目在投入使用后,都难免会有错误出现,那么如何记录一些对开发者有用的错误报告呢?这时候我们可以在单独的文本文件中将错误报告作为日志记录。错误日志的记录,可以帮助开发人员或者管理人员查看系统是否存在问题。

如果需要将程序中的错误报告写入错误日志中,只要在 PHP 的配置文件中,将配置项 log_errors 开启即可。

错误报告默认会记录到 Web 服务器的日志文件里,例如记录到 Apache 服务器的错误日志文件 error.log 中。当然也可以将错误日志记录到指定的文件中或发送到系统的 syslog也就是系统日志中,那接下来我们就分别来看一下吧。

使用指定文件记录错误报告日志

如果想使用自己指定的文件记录错误日志,一定要确保这个文件存放在文档根目录之外,以减少遭到攻击的可能。并且该文件一定要让 PHP 脚本具有写权限。首先我们需要将 php.ini 中的配置指令做如下修改:

  • log_errors = On ;决定日志语句记录的位置

  • log_errors_max_len = 1024 ;设置每个日志项的最大长度

  • error_reporting = E_ALL ;将会向PHP报告发生的每个错误

  • display_errors = Off ;不显示满足上条 指令所定义规则的所有错误报告

  • error_log = /usr/local/error.log ;指定产生的 错误报告写入的日志文件位置

PHP 的配置文件按上面的方式设置完成以后,并重新启动 Web 服务器。这样,在执行 PHP 的任何脚本文件时,产生的所有错误报告都不会在浏览器中显示,而会记录在自己指定的错误日志中。

此外,不仅可以记录满足 error_reporting 所定义规则的所有错误,而且还可以使用 PHP 中的 error_log() 函数把错误信息发送到 web 服务器的错误日志或者到一个文件里。

error_log() 函数的原型如下所示:

error_log ( string $message [, int $message_type = 0 [, string $destination [, string $extra_headers ]]] ) : bool

其中需要注意的是:

$message表示需要记录的错误信息;$destination表示目标,也就是错误消息被发送到的目的地。它的含义描述于以上,由 $message_type 参数所决定;$extra_headers表示额外的头。当 $message_type 设置为 1 的时候使用。 该信息类型使用了 mail() 的同一个内置函数。

$message_type表示设置错误应该发送到何处。可能的信息类型有以下几个:

  • 0:(默认值)将 $message 发送到 PHP 的系统日志,使用操作系统的日志机制或者一个文件,取决于配置文件中 error_log 设置了什么;

  • 1:将 $message 发送到参数 $destination 设置的邮件地址。 第四个参数 $extra_headers 只有在这个类型里才会被用到;(2已经被弃用了)

  • 3$message 被发送到位置为 $destination 的文件里。字符 $message 不会默认被当做新的一行;

  • 4:将 $message 直接发送到 SAPI 的日志处理程序中。

接下来我们通过示例看一下以登入 Mysql 数据库为例,当登入失败时记录错误信息。示例如下:

如果以登入Oracle数据库出现问题的处理为例,该函数的使用示例如下:

代码运行之后就会在php.ini 配置文件中 error_log 一项所设置的目录中生成对应的错误日志文件。接下来我们看一下错误信息记录到操作系统的日志里是什么情况。

错误信息记录到操作系统的日志里

错误报告也可以被记录到操作系统日志里,但不同的操作系统之间的日志管理也是不同的。以我们常见的windows举例,Windows 上错误将发送到事件日志里,可以通过事件查看器来查看。

那怎样才能将错误信息记录到操作系统的日志里呢?如果希望将错误报告写到操作系统的日志里,将 php.ini 配置文件中 error_log 项的值设置为 syslog 即可。接下来我们看一下php.ini需要修改的指令有哪些:

修改error_reporting = E_ALL用来报告所发生的每个错误;修改display_errors = Off 用来不显示满足上条指令所定义规则的所有错误报告;修改log_errors = On用于决定日志语句记录的位置;修改log_errors_max_len = 1024用于设置每个日志项的最大长度;修改error_log = syslog用于指定产生的错误报告写入操作系统的日志里 。

虽然通过前面介绍的 error_log() 函数,也可以向 syslog 中发送定制的消息,但在 PHP 中为这个特性提供了需要一起使用的 3 个专用函数,如下所示:

  • openlog()函数

打开一个当前系统中日志器的连接,为向系统插入日志消息做好准备。并将提供的第一个字符串参数插入到每个日志消息中。

  • syslog()函数

该函数向系统日志中发送一个定制消息。需要两个必选参数,第一个参数通过指定一个常量定制消息的优先级。第二个参数则是向系统日志中发送的定制消息,需要提供一个消息字符串,也可以是 PHP 引擎在运行时提供的错误字符串。

  • closelog()函数

该函数在向系统日志中发送完成定制消息以后调用,用来关闭由 openlog() 函数打开的日志连接。

那么接下来我们通过示例来看一下实际操作吧,示例如下:

以windows系统为例,打开"此电脑"右键选择"管理"选项,进入计算机管理界面,找到图示中应用程序的选项,就能够看到我们自己定制的警告信息了。如下所示:

其中我们需要注意的是:

你所使用的Web服务器环境决定了是使用指定文件还是使用syslog记录错误日志。如果你可以控制 Web 服务器,使用 syslog 是最理想的,因为你能利用 syslog 的解析工具来查看和分析日志。

但如果你的网站在共享服务器的虚拟主机中运行,就只有使用单独的文本文件记录错误日志了。

以上是"PHP错误日志如何配置和使用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

日志 错误 文件 系统 报告 函数 配置 信息 消息 操作系统 参数 服务器 服务 接下来 示例 位置 字符 指令 数据 管理 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 国家网络安全论坛永久会址最新 平谷区数据网络技术开发概况 红蜻蜓网络技术论坛 asm数据库 创建表空间 网络安全空间战略任务 天下双平台服务器 软件开发付款比例及付款时间 药物互相作用数据库 珠海市信息网络技术 长沙网络安全创建 浦东新区工商软件开发要多少钱 三丰云服务器是真的吗 长春百脑汇卖服务器的 科普网络安全手抄报 潍坊市海瑞软件开发有限公司 全国房地产行情数据库免费使用 同一个服务器下的前后端分离 数据库应用技术专升本系列 原神拟想秘境能跨服务器吗 计算机网络技术数据结构 宝塔怎么看数据库启动没 数据库连接远程端口 建三国文化信息化数据库 服务器进入bios打开vt 蜗牛学院网络安全工作 网络技术同经济发展的关系 热血传奇数据库10期 网络安全培训班机构 国神分院网络安全知识竞赛 魔兽世界如何知道自己服务器
0