phperror_log记录日志的使用方法和配置(日志目录一定要手动创建)

phperror_log记录⽇志的使⽤⽅法和配置(⽇志⽬录⼀定要⼿动
创建)
对于PHP开发者来说,⼀旦某个产品投⼊使⽤,应该⽴即将 display_errors选项关闭,以免因为这些错误所透露的路径、数据库连接、数据表等信息⽽遭到⿊客攻击。但是,任何⼀个产品在投⼊使⽤后,都难免会有错误出现,那么如何记录⼀些对开发者有⽤的错误报告呢?我们可以在单独的⽂本⽂件中将错误报告作为⽇志记录。错误⽇志的记录,可以帮助开发⼈员或者管理⼈员查看系统是否存在问题。如果需要将程序中的错误报告写⼊错误⽇志中,只要在PHP的配置⽂件中,将配置指令log_errors开启即可。错误报告默认就会记录到Web服务器的⽇志⽂件⾥,例如记录到Apache服务器的错误⽇志⽂件error.log中。当然也可以记录错误⽇志到指定的⽂件中或发送给系统syslog,分别介绍如下:
1、使⽤指定的⽂件记录错误报告⽇志
使⽤指定的⽂件记录错误报告⽇志使⽤指定的⽂件记录错误报告⽇志使⽤指定的⽂件记录错误报告⽇志如果使⽤⾃⼰指定的⽂件记录错误⽇志,⼀定要确保将这个⽂件存放在⽂档根⽬录之外,以减少遭到攻击的可能。并且该⽂件⼀定要让PHP脚本的执⾏⽤户(Web服务器进程所有者)具有写权限。假设在Linux操作系统中,将/usr/local/⽬录下的error.log⽂件作为错误⽇志⽂件,并设置Web服务器进程⽤户具有写的权限。然后在PHP的配置⽂件中,将error_log指令的值设置为这个错误⽇志⽂件的绝对路径。外腔半导体激光器
需要将php.ini中的配置指令做如下修改:
1. error_reporting  =  E_ALL                  ;将会向PHP报告发⽣的每个错误
2. display_errors = Off                        ;不显⽰满⾜上条指令所定义规则的所有错误报告
杀夫3. log_errors = On                            ;决定⽇志语句记录的位置
阿尔比派
4. log_errors_max_len = 1024                  ;设置每个⽇志项的最⼤长度
5. error_log = E:/php_log/php_error.log              ;指定产⽣的错误报告写⼊的⽇志⽂件位置
PHP 的配置⽂件按上⾯的⽅式设置完成以后,并重新启动Web服务器。这样,在执⾏PHP的任何脚本⽂件时,所产⽣的所有错误报告都不会在浏览器中显⽰,⽽会记录在⾃⼰指定的错误⽇志/usr/local/error.log中。此外,不仅可以记录满⾜error_reporting所定义规则的所有错误,⽽且还可以使⽤PHP中的error_log()函数,送出⼀个⽤户⾃定义的错误信息。
孔道该函数的原型如下所⽰:
1. bool error_log ( string message [, int message_type  [, string destination [, string extra_headers]]] )
此函数会送出错误信息到Web服务器的错误⽇志⽂件、某个TCP服务器或到指定⽂件中。该函数执⾏成功则返回TRUE,失败则返回FALSE。第⼀个参数 message 是必选项,即为要送出的错误信息。如果仅使⽤这⼀个参数,会按配置⽂件php.ini中所设置的位置处发送消息。第⼆个参数 message_type为整数值:0表⽰送到操作系统的⽇志中;1则使⽤PHP的Mail()函数,发送信息到某E-mail处,第四个参数extra_headers亦会⽤到;2则将错误信息送到TCP 服务器中,此时第三个参数destination表⽰⽬的地IP及Port;3则将信息存到⽂件destination中。
如果以登⼊Oracle数据库出现问题的处理为例,该函数的使⽤如下所⽰:
1. <?php
2.    if(!Ora_Logon($username, $password)){
3.        error_log("Oracle数据库不可⽤!", 0);        //将错误消息写⼊到操作系统⽇志中
4.    }
5.    if(!($foo=allocate_new_foo()){
6.        error_log("出现⼤⿇烦了!", 1, ". mydomain");  //发送到管理员邮箱中
7.    }
8.    error_log("搞砸了!",  2,  "localhost:5000");    //发送到本机对应5000端⼝的服务器中
9.    error_log("搞砸了!",  3,  "/usr/local/errors.log");  //发送到指定的⽂件中
10. ?>
2、错误信息记录到操作系统的⽇志⾥
13年卷布机事件错误信息记录到操作系统的⽇志⾥错误信息记录到操作系统的⽇志⾥错误信息记录到操作系统的⽇志⾥错误报告也可以被记录到操作系统⽇志⾥,但不同的操作系统之间的⽇志管理有点区别。在Linux上错误语句将送往syslog,⽽在Windows上错误将发送到事件⽇志⾥。如果你不熟悉syslog,起码要知道它是基于UNIX的⽇志⼯具,它提供了⼀个API来记录与系统和应⽤程序执⾏有关的消息。Windows事件⽇志实际上与UNIX的syslog相同,这些⽇志通常可以通过事件查看器来查看。如果希望将错误报告写到操作系统的⽇志⾥,可以在配置⽂件中将error_log指令的值设置为syslog。
具体需要在php.ini中修改的配置指令如下所⽰:
1. error_reporting  =  E_ALL                  ;将会向PHP报告发⽣的每个错误
2. display_errors = Off                            ;不显⽰满⾜上条指令所定义规则的所有错误报告
3. log_errors = On                            ;决定⽇志语句记录的位置
4. log_errors_max_len = 1024                  ;设置每个⽇志项的最⼤长度
5. error_log = syslog                          ;指定产⽣的错误报告写⼊操作系统的⽇志⾥
除了⼀般的错误输出之外,PHP还允许向系统syslog中发送定制的消息。虽然通过前⾯介绍的error_log()函数,也可以向syslog中发送定制的消息,但在PHP中为这个特性提供了需要⼀起使⽤的4个专⽤函数。
分别介绍如下:
define_syslog_variables()
在使⽤openlog()、syslog及closelog()三个函数之前必须先调⽤该函数。因为在调⽤该函数时,它会根据现在的系统环境为下⾯三个函数初使⽤化⼀些必需的常量。
openlog()
打开⼀个和当前系统中⽇志器的连接,为向系统插⼊⽇志消息做好准备。并将提供的第⼀个字符串参数插⼊到每个⽇志消息中,该函数还需要指定两个将在⽇志上下⽂使⽤的参数,可以参考官⽅⽂档使⽤。
syslog()
该函数向系统⽇志中发送⼀个定制消息。需要两个必选参数,第⼀个参数通过指定⼀个常量定制消息的优先级。例如LOG_WARNING表⽰⼀般的警告,LOG_EMERG表⽰严重地可以预⽰着系统崩溃的问题,⼀些其他的表⽰严重程度的常量可以参考官⽅⽂档使⽤。第⼆个参数则是向系统⽇志中发送的定制消息,需要提供⼀个消息字符串,也可以是PHP引擎在运⾏时提供的错误字符串。
closelog()
该函数在向系统⽇志中发送完成定制消息以后调⽤,关闭由openlog()函数打开的⽇志连接。
如果在配置⽂件中,已经开启向syslog发送定制消息的指令,就可以使⽤前⾯介绍的四个函数发送⼀个警告消息到系统⽇志中,并通过系统中的syslog解析⼯具,查看和分析由PHP程序发送的定制消息,如下所⽰:
1.
2.    define_syslog_variables();
3.    openlog("PHP5", LOG_PID , LOG_USER);
4.    syslog(LOG_WARNING, "警告报告向syslog中发送的演⽰,警告时间:".date("Y/m/d H:i:s"));
5.    closelog();
6. ?>
以Windows系统为例,通过右击"我的电脑"选择管理选项,然后到系统⼯具菜单中,选择事件查看器,再到应⽤程序选项,就可以看到我们⾃⼰定制的警告消息了。上⾯这段代码将在系统的syslog⽂件中,⽣成类似下⾯的⼀条信息,是事件的⼀部分:
GUIPU1
1. PHP5[3084], 警告报告向syslog中发送的演⽰,警告时间:2009/03/26 04:09:11.
使⽤指定的⽂件还是使⽤syslog记录错误⽇志,取决于你所在的Web服务器环境。如果你可以控制Web服务器,使⽤syslog是最理想的,因为你能利⽤syslog的解析⼯具来查看和分析⽇志。但如果你的⽹站在共享服务器的虚拟主机中运⾏,就只有使⽤单独的⽂本⽂件记录错误⽇志了。

本文发布于:2024-09-22 07:33:50,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/125531.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:消息   记录   系统   发送   错误   定制   错误报告
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议