PHP-如何抑制错误日志文件中的单个警告?

PHP-如何抑制错误日志文件中的单个警告?,php,Php,我的脚本从网站上抓取数据。每当该网站不可用时,我会在我的错误日志文件中出现如下错误: [03-Jun-2017 15:00:03 UTC]PHP警告:文件() 无法打开流:HTTP请求失败!HTTP/1.1503服务 不可用 有一个警告,但我只想抑制个别警告-因为我希望我的脚本中的任何其他警告仍然被记录 那么,是否可以抑制单个行的警告 我已经尝试过在try/catch块中包围给出警告的代码行,即 try { $lines = file("https://example.com"); //

我的脚本从网站上抓取数据。每当该网站不可用时,我会在我的错误日志文件中出现如下错误:

[03-Jun-2017 15:00:03 UTC]PHP警告:文件() 无法打开流:HTTP请求失败!HTTP/1.1503服务 不可用

有一个警告,但我只想抑制个别警告-因为我希望我的脚本中的任何其他警告仍然被记录

那么,是否可以抑制单个行的警告

我已经尝试过在try/catch块中包围给出警告的代码行,即

try {
    $lines = file("https://example.com"); // This line results in a warning in my error_log file if the web page is currently unavailable
}
catch(Exception $e) {
}

但我还是得到了警告。有人有其他想法吗?

几乎在所有情况下,抑制错误都是胡说八道。一个合适的解决方案是检查返回的HTTP状态码,并且仅当它是有效的时才使用它上面的文件

例如(未测试,3v4l不支持cURL):


看起来您可以在脚本中切换错误报告状态:

error_reporting(E_ALL); // Report all errors/warnings/notices
$lines = file("https://111111asegfiwaehflewakfhewaflk.err"); // Warning logged

error_reporting(E_ERROR | E_PARSE); // Don't report warnings
$lines = file("https://222222asegfiwaehflewakfhewaflk.err"); // Warning NOT logged

error_reporting(E_ALL); // Report all errors/warnings/notices
$lines = file("https://333333asegfiwaehflewakfhewaflk.err"); // Warning logged

是一种更好的方法,但我会在回答原始问题时发布此答案。

尝试使用此方法:
error\u reporting(E\u error | E\u PARSE)其原因是警告不是异常=>您无法捕获它。我建议在生产中关闭警告…谢谢,但这不会抑制所有其他警告(我想保留)?是的,下一个讨厌的选项是:
@file(“https://example.com");如果我移动了
$lines=文件(“https://example.com");行代码添加到单独的php文件中,然后仅在该文件中设置
错误报告(…)
。这样行吗?我会使用@operator,然后检查
$line
中是否有任何内容,谢谢。是否可以在不发出额外请求的情况下检查HTTP状态代码?@ban geoengineering Yes-停止使用file()处理url及其响应,并使用curl获取响应。谢谢,但即使我添加
curl\u setopt($handle,CURLOPT\u NOBODY,true)
对于您的代码,我仍在发出两个请求-一个是通过cURL,另一个是通过
文件($domain)
。是否可以通过单个调用执行检查和(如果代码为200)检索?@ban geoengineering是的,正如我所说的-完全停止使用
文件()
-使用
$response=curl\u exec($handle)
,并正确解析输出。您是否可以相应地更新代码,因为它目前似乎正在同时使用这两种方法?
error_reporting(E_ALL); // Report all errors/warnings/notices
$lines = file("https://111111asegfiwaehflewakfhewaflk.err"); // Warning logged

error_reporting(E_ERROR | E_PARSE); // Don't report warnings
$lines = file("https://222222asegfiwaehflewakfhewaflk.err"); // Warning NOT logged

error_reporting(E_ALL); // Report all errors/warnings/notices
$lines = file("https://333333asegfiwaehflewakfhewaflk.err"); // Warning logged