• error_log


    对于我们做php开发的人员,上了生产环境,一定要把相关debug,display_errors错误提示等关掉。谁还难免不犯个错呢?这样能防止非致命性报错下,导致项目路径、数据库等信息泄漏。
    问:那么问题来了,我们在生产该如何查看php等相关错误呢?
    答:记录到错误日志里。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 = /var/php_errors.log            ;指定产生的 错误报告写入的日志文件位置  
    PHP的配置文件按上面的方式设置完成以后,并重新启动Web服务器。这样,在执行PHP的任何脚本文件时,所产生的所有错误报告都不会在浏览器中显示,而会记录在自己指定的错误日志/usr/local/error.log中。此外,不仅可以记录满足error_reporting所定义规则的所有错误,
    而且还可以使用PHP中的error_log()函数,送出一个用户自定义的错误信息
     
    二.查看存放地址
    1.通过php.ini来查看错误日志存放地址
    1. echo '<?php phpinfo(); ?>' | php 2>&1 |grep -i error_log  
    或者在一个php文件中输出 phpinfo();查看错误日志存放位置
     
    2.查看日志存放位置
    1. vi /etc/php.ini  
     
     
    3.查看日志:
    1. tail -f -50 /var/php_errors.log  
     
     
    除了一般的错误输出之外,PHP还允许向系统syslog中发送定制的消息。虽然通过前面介绍的error_log()函数,也可以向syslog中发送定制的消息,但在PHP中为这个特性提供了需要一起使用的4个专用函数。这里就不介绍了。
     

    该函数的原型如下所示:

     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.com");   //发送到管理员邮箱中   

    7.     }  

    8.     error_log("搞砸了!",   2,   "localhost:5000");     //发送到本机对应5000端口的服务器中   

    9.     error_log("搞砸了!",   3,   "/usr/local/errors.log");  //发送到指定的文件中   

    10. ?> 

     
     
     
  • 相关阅读:
    【深度学习系列1】 深度学习在腾讯的平台化和应用实践
    js复制button在ie下的解决方式
    兔子--Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK
    UART串口协议基础1
    高校站点群建设方案简单介绍
    oracle10G之前介质下载地址【珍藏版】
    程序猿打新总结 6月份 新股申购秘籍
    斯坦福IOS开发第五课(第一部分)
    O2O领域添新军,正品网加快布局的战略考量
    如风一样,飞翔------Day37
  • 原文地址:https://www.cnblogs.com/hehexu/p/8681406.html
Copyright © 2020-2023  润新知