php - feof hatası

3 Cevap php

Ben okumaya çalışıyorum dosyası pgp-şifreli dosya. Bu şifresini sürecinin bir parçasıdır ve aslında ben o zaman şifresini böylece bir dizeye içeriğini okumak için çalışılıyor. Ben burada ya da değil temel sorun ise emin değilim, ama bir hata alıyorum:

Warning: feof(): supplied argument is not a valid stream resource

İşte dosya kod:

if($handle = opendir($dir)) {
  while( false !== ($file = readdir($handle))) {
    if($file != "." && $file != "..") {
      $fhandle = fopen($file, "r");
      $encrypted = '';
      $filename = explode('.',$file);
      while(!feof($fhandle)) {
        $encrypted .= fread($fhandle, filesize($file));
      }
      fclose($fhandle);
      $decrypted = $filename[0].'.txt';
      shell_exec("echo $passphrase | $gpg --passphrase-fd 0 -o $decrypted -d $encrypted");
    }
  }
}

3 Cevap

Kodunuzu debug öğrenin.

supplied argument is not a valid stream resource means passed variable contains unexpected value. So, we can make a logical conclusion, that a function returning this variable had fail. So. we have to check fopen($file, "r"); what makes it fail? may be we can check if a file exists? And so on.

Bu hata ayıklama denir ve onsuz programı olamaz.

Though it seems very strange. Because fopen should throw an error as well.

Sen emin dosya aslında açılmış konum yapmak için fopen çağrısı kontrol etmelisiniz. It dönüş değerini kontrol edin.

Eğer dizin çalışıyoruz sabitleme gibi $ dir büyük ihtimalle farklıdır. Muhtemelen gerek

fopen("$dir/$file","r"); 

unless you change to the directory first. edit clarified that the code sample was a possible solution to the problem, not code to check the return value.

Size dönüş değerlerini kontrol etmeniz gerekir. Hata $fhandle geçerli bir dosya tanıtıcı içermiyor gösterir - bu muhtemelen false içeren, fopen başarısızlık döndürür.

Bkz http://ca.php.net/manual/en/function.fopen.php