Php "file_get_contents" Capture hatası

3 Cevap

burada kodu:

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 />');
}

When the file_get_contents = true (no error) everything get well when the file_get_contents = false I juste got THE big error message at screen... i just like to test it, not execute it !

NASIL?

Burada hata iletisi:

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

3 Cevap

Hızlı yolu:

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

'@' Hataları bastırır.

Bir potansiyel olarak daha iyi şekilde sadece testi için:

if (! file_exists($jsonaddress)){

De (Eğer akışı olsun alabilirsiniz görmek, ancak başarısız olursa sadece return false) ne istediğinizi yapın ... ama ne kadar iyi çalışacağını emin değilim olabilir. (Son zamanlarda fopen korumalar ile denemedim)

Ayrıca kontrol file_get_contents() başarısız olasılığı ise is_readable() görmek için yapabilirsiniz:

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
}

Size davranışı üzerinde daha iyi kontrol sağlar ki, file_get_contents bir akım bağlamı iletebilirsiniz. Özellikle, kullanabilirsiniz 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;