2016-04-14 17 views
0

olmasını bekler Ben şuna benzer hata günlükleri binlerce alıyorum:feof() parametresi 1 kaynak

$xml = "<requisicao-boleto> 
       <website> 
        <n_website>{$n_website}</n_website> 
        <password>{$password}</password> 
       </website> 

       <sacado> 
        <name>{$name}</name> 
        {$user_code} 
        <address> 
         <street>{$street}</street> 
         <complement>{$complement}</complement> 
         <number>{$number}</number> 
         <district>{$district}</district> 
         <state_province>{$state_province}</state_province> 
         <city>{$city}</city> 
         <postcode>{$postcode}</postcode> 
         <country>{$country}</country> 
        </address> 
       </sacado> 
       <dados_boleto> 
        <product>{$product}</product> 
        <reference>{$uid}</reference> 
        <value>{$value}</value> 
       </dados_boleto> 
      </requisicao-boleto>"; 

    $xml = preg_replace('/\s(?=\s)/', '', $xml); 
    $xml = "xml=" . $xml; 

    $n = strlen($xml); 

    $opts = array(
     'http' => array(
      'method' => "POST", 
      'header' => "User-Agent: My Own Http Client\r\n" . 
       "Content-length: " . $n . "\r\n", 
      'content' => $xml 
     ) 
    ); 

    $context = stream_context_create($opts); 

    $handle = fopen($URL, 'r', false, $context); 

    $conteudo = ''; 

    while (!feof($handle)) { 
     $conteudo .= fread($handle, 1024); 
    } 

kodudur:

while (!feof($handle)) { 
    $conteudo .= fread($handle, 1024); 
} 

kimse simillar sorun aracılığıyla olmuştur ve Bu sorunun üstesinden nasıl geleceğini biliyor musunuz?

Daha önce verilmiş olan emzikleri uyguladığım sırada bu soruyu tam kod ile güncelledim.

+0

$ handel ne var? –

+0

$ handle = fopen ($ URL, 'r', false, $ context); @ChetanAmeta – danrodrigues

+2

Yani, fopen() dosyanız başarısız oldu –

cevap

1

Fopen'in çalıştığını kontrol ettiniz mi?

$handle = fopen($URL, 'r', false, $context); 
if ($handle === FALSE) { 
    echo 'Cannot open this url ' . $URL; 
    exit; 
} 
1

Kontrol fopen

için dokümantasyon hatası durumunda bir dosya tanıtıcısı özkaynağı veya YANLIŞ döndürür. Senin durumunda fopen içinde bence

false döndü ve feof da false döndürür. Bu yüzden sonsuz döngü elde edersiniz. Dosya işaretçisi EOF veya bir hata (soket zaman aşımı dahil) oluşursa Aşağıda

İade DOĞRU feof belgelerinden alıntı; Aksi takdirde FALSE döndürür.

Sizin örnek Sen $handle başka bir şey yapmadan önce bir kaynaktır olmadığını kontrol edilmesi gereken bir

php > var_dump(feof(false)); 
PHP Warning: feof() expects parameter 1 to be resource, boolean given in php shell code on line 1 
PHP Stack trace: 
PHP 1. {main}() php shell code:0 
PHP 2. feof() php shell code:1 
bool(false) 
php > 

benziyor.