【问题标题】:Error logging php - error_reporting(0) not having desired effect错误记录 php - error_reporting(0) 没有预期的效果
【发布时间】:2011-01-22 20:43:24
【问题描述】:

我有一个非常简单的页面,它获取一个 url 并解析一些数据。

如果响应是 404 错误,我已经在我的页面中内置了一些错误处理。

但是,我似乎无法阻止 php 吐出以下错误

警告:file_get_contents(http://url-to-retrieve.com/123.html) [function.file-get-contents]:打开流失败:HTTP 请求失败! HTTP/1.1 404 Not Found in /var/www/html/maickl/procs/get.php on line 84 注意:未定义的偏移量:第 91 行 /var/www/html/maickl/procs/get.php 中的 0

我以

开始页面 错误报告(0)

关于为什么会发生这种情况、为什么这些错误没有被抑制(似乎只在这个页面上)以及我能做些什么的任何建议?

【问题讨论】:

    标签: php error-handling


    【解决方案1】:

    使用 error_reporting(0); 应该禁用错误报告,这意味着您不应该收到该错误 - 您确定它没有在某处重新启用吗?


    但实际上,您可能正在寻找的不是更改error_reporting,而是禁用display_errors,这可以使用类似这样的代码来完成:

    ini_set('display_errors', 'Off');
    

    有了这个:

    • 错误/警告不会显示在您的网站上,这对最终用户来说非常好(永远不应显示技术错误)
    • error_reporting 未被禁用,这意味着错误可以/仍将被记录——请参阅log_errorserror_log

    【讨论】:

    • 感谢 Pascal,我认为应该隐藏所有错误,但事实并非如此,我什至不确定如何“重新启用”error_reporting。我尝试使用您提供的 display_errors,但我仍然得到相同的响应。很奇怪....
    • 对不起,我明白了。我包含了一个由于某种原因具有不同错误设置的文件。谢谢
    • OK :-) 感谢您的评论(我不得不承认第一个让我想知道...很好,您也发布了第二个^^)。玩得开心!
    【解决方案2】:

    还请记住,如果您设置了用户定义的错误处理函数,那么error_reporting() 设置将被完全忽略。

    【讨论】:

    • 这应该是一条评论。
    【解决方案3】:

    关闭错误报告是一种方法,但我建议简单地修复错误或添加适当的错误处理。

    try {
         //try to do the following
         $content = file_get_contents('file/to/try.txt');
    } catch (Exception $e) {
         //do this in case of an error
         die($e->getMessage());
    }
    

    【讨论】:

      【解决方案4】:

      确保您不会忘记debug_print_backtrace() 的输出。您仍然可以使用以下方法捕获它并阻止它输出到客户端:

      ob_start(); 
      $error = mysqli_real_escape_string($db, $error.print_r(debug_print_backtrace(),1));
      ob_end_clean(); 
      

      【讨论】:

        猜你喜欢
        • 2010-12-27
        • 1970-01-01
        • 1970-01-01
        • 2014-05-06
        • 2018-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-01
        相关资源
        最近更新 更多