php 写入数据库-服务器PHP错误日志解读

2023-08-22 0 9,196 百度已收录

对于PHP开发人员来说,一旦产品投入使用,应立即关闭display_errors选项,以免因该错误泄露路径、数据库连接、数据表等信息而受到黑客攻击。

然而任何产品投入使用后都难免会出现错误,那么如何记录一些对开发人员有用的错误报告呢? 我们可以将错误报告作为日志记录在单独的文本文件中。

错误日志的记录可以帮助开发人员或管理人员检查系统是否存在问题。 如果需要将程序中的错误报告写入错误日志中,只需在PHP配置文件中开启配置命令log_errors即可。

默认情况下,错误报告记录在Web服务器的日志文件中php 写入数据库,例如Apache服务器的错误日志文件error.log中。 其实你也可以将错误日志记录到指定文件或者发送到系统syslog,分别如下:

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

使用指定的文件进行错误报告日志记录 使用指定的文件进行错误报告日志记录 使用指定的文件进行错误报告日志记录 被命中的可能性。

但这个文件必须允许PHP脚本的执行用户(Web服务器进程的所有者)有写权限。 假设Linux操作系统中,错误日志文件为/usr/local/目录下的error.log文件,并设置Web服务器进程用户有写权限。

然后在 PHP 配置文件中,将 error_log 指令的值设置为错误日志文件的绝对路径。

php 写入数据库-服务器PHP错误日志解读

php.ini中的配置指令需要修改如下

error_reporting = E_ALL                   ;将会向PHP报告发生的每个错误   display_errors = Off                        ;不显示满足上条 指令所定义规则的所有错误报告   log_errors = On                             ;决定日志语句记录的位置   log_errors_max_len = 1024                   ;设置每个日志项的最大长度   error_log = /usr/local/error.log            ;指定产生的 错误报告写入的日志文件位置

按照前面的方法设置好PHP配置文件后,重新启动Web服务器。

这样,当执行PHP的任何一个脚本文件时,形成的所有错误报告都不会显示在浏览器中,而是记录在自己指定的错误日志/usr/local/error.log中。

据悉,除了记录所有符合error_reporting定义的规则的错误之外,还可以使用PHP中的error_log()函数发送用户定义的错误消息。

函数的原型如下所示:

bool error_log ( string message [, int message_type [, string destination[, string extra_headers]]] )

该函数将错误消息发送到Web服务器的错误日志文件、TCP服务器或指定的文件。

php 写入数据库-服务器PHP错误日志解读

如果成功,该函数返回 TRUE;如果失败,则返回 FALSE。

第一个参数message是必填的,即要发送的错误消息。 如果仅使用此参数,则消息将发送到配置文件 php.ini 中设置的位置。

第二个参数message_type是一个整数值:0表示发送到操作系统的日志; 1 使用PHP的Mail()函数将消息发送到电子邮件,

第四个参数extra_headers也会用到; 2.将错误信息发送给TCP服务器,此时第三个参数destination表示目的IP和Port; 3 将信息保存到文件目的地。

如果以登录Oracle数据库的问题为例,该函数的使用如下:

<?phpif(!Ora_Logon($username, $password)){    error_log("Oracle数据库不可用!", 0); //将错误消息写入到操作系统日志中}
if(!($foo=allocate_new_foo()){ error_log("出现大麻烦了!", 1, ". mydomain.com"); //发送到管理员邮箱中}
error_log("搞砸了!", 2, "localhost:5000"); //发送到本机对应5000端口的服务器中error_log("搞砸了!", 3, "/usr/local/errors.log"); //发送到指定的文件中?>

2、错误信息记录在操作系统的日志中

错误信息记录在操作系统的日志中 错误信息记录在操作系统的日志中 错误信息记录在操作系统的日志中 错误报告也可以记录在操作系统日志中,但是之间的日志管理不同的操作系统是有一定区别的。

php 写入数据库-服务器PHP错误日志解读

在Linux上,错误语句将发送到syslog,在Windows上,错误将发送到storm log。 如果您不熟悉 syslog,至少知道它是一个基于 UNIX 的日志记录工具,提供 API 来记录与系统和应用程序执行相关的消息。

Windows的storm日志其实和UNIX的syslog是一样的,这种日志一般可以通过storm查看器查看。 如果想将错误报告到操作系统的日志中,可以在配置文件中将error_log指令的值设置为syslog。

php.ini中具体需要更改的配置指令如下:

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

除了通常的错误输出之外,PHP 还允许将自定义消息发送到系统 syslog。 即使通过上面介绍的error_log()函数,也可以将自定义消息发送到syslog,但是PHP提供了4个专用函数,需要一起使用才能实现此功能。

它们的介绍如下:

定义_syslog_变量()

在使用 openlog()、syslog 和 closelog() 这三个函数之前必须调用该函数。 因为这个函数在调用的时候,会根据当前的系统环境,初始化下面三个函数的一些必要的常量。

打开日志()

打开与当前系统中记录器的连接,准备将日志消息插入系统。 并将提供的第一个字符串参数插入到每个日志消息中。 该函数还需要指定两个将在日志上下文中使用的参数,可以参考官方文档使用。

系统日志()

此函数将自定义消息发送到系统日志。 需要两个强制参数。 第一个参数指定一个常量来自定义消息的优先级。

例如,LOG_WARNING表示常见警告,LOG_EMERG表示严重问题,可能导致系统崩溃,其他一些表示严重程度的常量可以参考官方文档使用。

第二个参数是发送到系统日志的自定义消息。 需要提供消息字符串,也可以是 PHP 引擎在运行时提供的错误字符串。

关闭日志()

该函数在向系统日志发送自定义消息后调用,并关闭 openlog() 函数打开的日志连接。

php 写入数据库-服务器PHP错误日志解读

如果配置文件中已经启用了向syslog发送自定义消息的命令,则可以使用上述四个函数向系统日志发送警告消息,并使用系统中的syslog分析工具来查看和分析程序发送的自定义消息,如下:

<? php   define_syslog_variables();   openlog("PHP5", LOG_PID , LOG_USER);   syslog(LOG_WARNING, "警告报告向syslog中发送的演示, 警告时间:".date("Y/m/d H:i:s"));   closelog();php?>

以Windows系统为例,右键“我的笔记本”选择管理选项,然后进入系统工具菜单,选择Storm Viewerphp 写入数据库,然后找到应用程序选项,就可以看到我们自定义的警告信息。

前面的一段代码会在系统的syslog文件中生成类似如下的消息,这是storm的一部分:

1. PHP5[3084],向syslog发送警告报告的演示,警告时间:2019/03/2604:09:11。

是否使用指定文件或使用syslog来记录错误日志取决于您的Web服务器环境。

如果你可以控制Web服务器,那么使用syslog是理想的,因为你可以使用syslog的解析工具来查看和分析日志。

但如果您的网站运行在共享服务器上的虚拟主机中,则只能使用单独的文本文件来记录错误日志。

-EOF-

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 php php 写入数据库-服务器PHP错误日志解读 https://www.wkzy.net/game/140383.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务