私はzipファイルを受け取り、抽出するPHPスクリプトを作成しようとしています。私がファイルを取得したときに最初に行うことは、すべてが大丈夫で、zipのフォルダ構造が正しいかどうかを調べるためにファイルを内部に取り出そうとすることです。すべてうまくいけば、スクリプトは続けてファイルを抽出します。問題はここにあります。私がzip_entry_read()
をzipエントリに一度だけ呼び出すと、コンテンツが取得されるようですが、同じzipエントリ参照で再度呼び出すと、何も返されません。メタデータはまだそこにあります。 zip_entry_name()
、サイズ、およびすべてが正しいデータを返しますが、コンテンツは返しません。 どうしてなぜですか?php zip_entry_read issue
はここだと例。
$target = zip_open("file.zip");
while (false !== ($entry = zip_read($target)) {
// ... some code here
$name = zip_entry_name($entry); // returns filename.txt
$filesize = intval(zip_entry_filesize($entry)); // returns the filesize
$data = zip_entry_read($entry, $filesize); // returns the content of the file
$name = zip_entry_name($entry); // returns the same filename.txt
$filesize = intval(zip_entry_filesize($entry)); // returns the same filesize
$data = zip_entry_read($entry, $filesize); // ---> returns NOTHING <---
// .. some more code here
}
ありがとうございます。
たぶん、あなたはそれを閉じて再び開く必要がありますか? PHPのヘルプで私は見ることができます:_読み取ったデータを返します。ファイルの終わりに達した場合はFALSEを返します。 – Andron
なぜデータを2回抽出しようとしていますか? – thetaiko
私はその地獄のために明示的にデータを2回読んでいません。全体的なプロセスでは、検証ステップで一度ファイルを読み込む必要があり、インストールプロセスは実際にそれらをディスクに書き込んで再度読み込みます。このステップに到達すると、コンテンツはヌルです。ファイルの内容を最初のメモリに読み込んで保存した場合、他の特別なチェックが行われて、内容がzipから読み取られるかどうかがわかります。これは愚かなことです。私はそれを定義された方法で動作させようとしていました。 – TheBrain