推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

关于服务器 PHP 错误日志详解

   2023-08-10 网络整理佚名1910
核心提示:错误报告默认就会记录到Web服务器的日志文件里,例如记录到服务器的错误日志文件error.log文件作为错误日志文件,并设置Web服务器进程用户具有写的权限。将指令的值设置为这个错误日志文件的绝对路径。此函数会送出错误信息到Web服务器的错误日志文件、某个TCP服务器或到指定文件中。如果仅使用这一个参数,会按配置文件php.

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

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

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

错误报告默认会记录在Web服务器的日志文件中,例如会记录在服务器的错误日志文件error.log中。 当然,你也可以将错误日志记录到指定文件或发送到系统,分别如下:

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

使用指定文件记录错误报告日志 使用指定文件记录错误报告日志 使用指定文件记录错误报告日志 如果使用自己指定的文件记录错误日志,请务必将此文件存储在外部文档根目录,减少被攻击的可能性。

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

然后在 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中。

另外,不仅可以记录所有符合定义规则的错误,还可以使用PHP中的()函数发送用户定义的错误消息。

该函数的原型如下所示:

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

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

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

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

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

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

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

if(!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、错误信息记录在操作系统的日志中

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

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

事件日志实际上与UNIX的事件日志相同,通常可以通过事件查看器查看这些日志。 如果要将错误报告写入操作系统的日志中,可以将配置文件中的指令值设置为 。

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

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

除了一般的错误输出之外,PHP 还允许将自定义消息发送到系统。 虽然通过前面介绍的 () 函数,也可以向其发送定制的消息,但是在 PHP 中,有 4 个专用函数需要一起使用才能实现此功能。

它们的介绍如下:

莱斯()

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

()

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

()

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

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

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

()

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

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

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

以系统为例,右键单击“我的电脑”,选择管理选项,然后进入系统工具菜单,选择事件查看器,然后找到应用程序选项,就可以看到我们定制的警告信息。

上面的代码将在系统文件中生成类似于以下内容的消息,该消息是事件的一部分:

1. PHP5[3084],演示发送警告报告,警告时间:2019/03/26 04:09:11。

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

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

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

- 结束符 -

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON