这是代码:
if( false == (file_get_contents($jsonaddress)))
{
//error
print ('Error with stream, getting file instead !<br />');
$jsonaddress = 'listedesodeurs.txt';
}
else
{
//noerror
print ('Sucessfully GET data from JSON stream<br />');
$jsoncontent = file_get_contents($jsonaddress);
$size = file_put_contents('listedesodeurs.txt', $jsoncontent);
echo ('Making backup of stream in file : '.round(($size/1024),0).' KB <br />');
}
当file_get_contents = true(没有错误)时,一切都很顺利 当file_get_contents = false时,我juste在屏幕上收到了大错误信息...我只想测试它,而不是执行它!
如何?
这是错误消息:
[function.file-get-contents]: failed to open stream: Inappropriate ioctl for device in
答案 0 :(得分:10)
快捷方式:
if( false == (@file_get_contents($jsonaddress)))
'@'抑制错误。
一种可能更好的方法就是测试:
if (! file_exists($jsonaddress)){
你可以随心所欲(看看你是否可以获得流,但只要失败就返回false)......但我不确定它会有多好用。 (最近还没试过fopen包装)
答案 1 :(得分:4)
您还可以查看is_readable()以查看file_get_contents()
是否可能失败:
if(is_readable($jsonaddress)) {
// noerror
print ('Sucessfully GET data from JSON stream<br />');
... etc
}
else {
// error
print ('Error with stream, getting file instead !<br />');
... etc
}
答案 2 :(得分:1)
您可以将流上下文传递给file_get_contents
,这样可以更好地控制行为。特别是,您可以使用 ignore_errors
:
$content = file_get_contents(
$jsonaddress, false,
stream_context_create(
array(
'http' => array(
'ignore_errors' => true))));
$ok = preg_replace('/^.*([0-9]{3}).*$/', '$1', $http_response_header[0]) == 200;