Ошибка захвата php "file_get_contents" в автоматическом режиме - PullRequest
1 голос
/ 02 октября 2009

вот код:

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, я получаю большое сообщение об ошибке на экране ... я просто хотел проверить его, а не выполнить!

КАК?

вот сообщение об ошибке:

[function.file-get-contents]: failed to open stream: Inappropriate ioctl for device in 

Ответы [ 3 ]

10 голосов
/ 02 октября 2009

Быстрый способ:

if( false == (@file_get_contents($jsonaddress)))

'@' подавляет ошибки.

Потенциально лучший способ - просто проверить:

if (! file_exists($jsonaddress)){

Может хорошо сделать то, что вы хотите (посмотрите, сможете ли вы получить поток, но просто верните false, если он потерпит неудачу) ... но я не уверен, насколько хорошо он будет работать. (не пробовал это недавно с fopen wrappers)

4 голосов
/ 02 октября 2009

Вы также можете проверить 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
}
1 голос
/ 10 февраля 2013

Вы можете передать потоковый контекст в 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...