ドキュメントで説明されているように、コメントで @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
}