我有一个非常简单的页面,它获取一个url并解析一些数据。
如果响应是404错误,我已在内容中内置了一些错误处理。
然而,我似乎无法阻止php吐出以下错误
Warning: file_get_contents(http://url-to-retrieve.com/123.html) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /var/www/html/maickl/procs/get.php on line 84 Notice: Undefined offset: 0 in /var/www/html/maickl/procs/get.php on line 91
我用
开始页面error_reporting(0)
有关为什么会发生这种情况的原因,为什么这些错误没有被抑制(似乎只在这个页面上),以及我能做些什么呢?
答案 0 :(得分:5)
使用error_reporting(0);
shoud禁用错误报告,这意味着您不应该收到错误 - 您确定它没有在某处重新启用吗?
但实际上,您可能正在寻找的不是更改error_reporting
,而是禁用display_errors
,这可以使用类似这样的代码来完成:
ini_set('display_errors', 'Off');
有了这个:
error_reporting
未被停用,这意味着可以/仍将记录错误 - 请参阅log_errors
和error_log
。答案 1 :(得分:5)
另请记住,如果您设置了用户定义的错误处理函数,则error_reporting()
设置将被完全忽略。
答案 2 :(得分: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());
}
答案 3 :(得分:0)
确保您没有忘记 debug_print_backtrace()
的输出。您仍然可以使用以下方法捕获它并防止其输出到客户端:
ob_start();
$error = mysqli_real_escape_string($db, $error.print_r(debug_print_backtrace(),1));
ob_end_clean();