从file_get_contents中防止false的内部错误

时间:2017-05-25 19:55:49

标签: php wordpress

我想使用以下内容来检测文件是否存在,但是在这种情况下会触发警告。当file_get_contents没有返回false时,它工作正常。

$nothing = "http://www.google.com/bababababa.doc";
if (false === file_get_contents($nothing,0,null,0,1)) {
    echo "File Not Found";
} else {
    echo "File Found";
}

1 个答案:

答案 0 :(得分:0)

首先,我假设您只想从日志中隐藏此错误,因为您当然在生产服务器上关闭了display_errors

您可以使用@ error suppression operator隐藏您的错误,但这是一条糟糕的开始之路。相反,您想要定义错误处理程序:

<?php
// define the custom handler that just returns true for everything
$handler = function ($err, $msg, $file, $line, $ctx) {return true;}

$nothing = "http://www.google.com/bababababa.doc";
// update the error handler for warnings, keep the old value for later
$old_handler = set_error_handler($handler, E_WARNING);
// run the code
$result = file_get_contents($nothing);
// go back to normal error handling
set_error_handler($old_handler);

if (false === $result) {
    echo "File Not Found";
} else {
    echo "File Found";
}