-1

読み込もうとしているファイルは pgp 暗号化ファイルです。これは暗号化を解除するプロセスの一部であり、実際にコンテンツを文字列に読み込んで暗号化を解除しようとしています。それがここでの中心的な問題かどうかはわかりませんが、エラーが発生しています:

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

ファイルコードは次のとおりです。

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");
    }
  }
}
4

3 に答える 3

2

コードをデバッグする方法を学びます。

supplied argument is not a valid stream resource渡された変数に予期しない値が含まれていることを意味します。したがって、この変数を返す関数が失敗したという論理的な結論を下すことができます。そう。fopen($file, "r");失敗の原因を確認する必要がありますか?ファイルが存在するかどうかを確認できますか?等々。

これはデバッグと呼ばれ、これなしではプログラミングできません。

とても奇妙に思えますが。fopen もエラーをスローする必要があるためです。

于 2010-05-20T16:56:23.093 に答える
0

fopen 呼び出しをチェックして、ファイルが実際に開かれていることを確認する必要があります。戻り値を確認してください。

修正に関しては、作業ディレクトリは $dir とは異なる可能性があります。あなたはおそらく必要です

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

最初にディレクトリに変更しない限り。 editは、コード サンプルが問題の可能な解決策であり、戻り値をチェックするコードではないことを明確にしました。

于 2010-05-20T16:53:19.907 に答える
0

戻り値を確認する必要があります。このエラーは$fhandle、 に有効なファイル ハンドルが含まれていないことを示しています。おそらく が含まれており、失敗したfalse場合にfopen返されます。

http://ca.php.net/manual/en/function.fopen.phpを参照してください。

于 2010-05-20T16:54:20.277 に答える