0

すべてのファイルを圧縮して返す http リクエストを作成しています。ただし、zip ファイルを開こうとすると、整数に戻ります。

$zip = zip_open("http://this/returns/zip/file");

while($zipFile = zip_read($zip)) 
{ 
    echo "Filename: " . zip_entry_name($zipFile) . "<br>"; 
    echo "Compressed Size: " . zip_entry_compresedsize($zipFile) . "<br>"; 
    echo "Real Size: " . zip_entry_filesize($zilFile) . "<br><br>"; 
}

ここで何が問題で、どうすれば修正できますか? 前もって感謝します。

編集: コード番号は 11 です。

4

1 に答える 1

1

ドキュメントで説明されているように、コメントで @crontab が言及されているように、zip_open失敗時にエラー コードを返します。

戻り値

後で zip_read() および zip_close() で使用するためにリソース ハンドルを返します。ファイル名が存在しない場合やその他のエラーの場合は、エラーの番号を返します。

表示されているエラー コードが何を参照しているかを判断するには、このマニュアル ページで定義済みのエラー定数、具体的には で始まる定数と比較しER_ます。

そのページには、各定数のリテラル値が何であるかを示すコメントがありますが、それがどれほど正確かはわかりません。


表示されているエラー コードが integer であるという編集を見ました11。そのエラー コードは ですZIPARCHIVE::ER_OPEN。これは、PHP がファイルを開くことができなかったことを意味します。

使用しているファイル名が正確であること、およびファイルが PHP で読み取り可能であることを確認する必要があります。ファイルを開く前に、関数を使用してis_readableこれを確認できます。

システム上でファイルを開くことができるからといって、PHP でファイルを開くことができるわけではないことに注意してください。ファイルのパーミッションはユーザーによって異なり、PHP がユーザー アカウントで実行されていない可能性が非常に高くなります。


URL 経由でこのファイルを開こうとしていることがわかりました。リモートファイルを開くことができるかどうかはわかりませんzip_openが、存在すると確信しているリモートファイルを使用してマシンで簡単にテストすると、できないことが示されているようです。is_readable同様に、リモート ファイルを処理できません。

この場合、リモート ファイルをダウンロードしてからzip_open、新しく作成したローカル ファイルを呼び出すのが最善の方法です。

copy($remote_filename, $local_filename);
$zip = zip_open($local_filename);
if (is_resource($zip) {
  // process archive
} else {
  // handle error conditions
}
于 2013-01-18T20:01:47.497 に答える