ホームページ  >  記事  >  php教程  >  PHPの解凍ZipArchiveのextractTo()メソッドで、LINUX+nginx環境でzipを解凍するとファイルが失われる問題。

PHPの解凍ZipArchiveのextractTo()メソッドで、LINUX+nginx環境でzipを解凍するとファイルが失われる問題。

WBOY
WBOYオリジナル
2016-06-21 08:48:511222ブラウズ

このプロジェクトでは、ZIP ファイルの解凍に ZipArchive を使用しています。当初、テスト環境は WINDOWS プラットフォームであり、テストは成功しましたが、LINUX+nginx 環境に切り替えると問題が発生しました (ファイル数が 300 を超えています)。問題は、中国語の文字を含まないファイルは問題なく解凍できますが、他のプレーン テキスト ファイル名は問題なく解凍できます。は失われ、エラーは報告されませんでした。問題は最終的に extractTo() メソッドにありました。このメソッドはカプセル化されたメソッドであり、実際のソース コードは表示されません。

ただし、for($i = 0; $i < $zip->numFiles; $i++) ではすべてのファイルがここにあり、その数は正常であることがわかり、コピーで問題が発生します。解凍後のリンク。では、このループを使用して自分でファイルを解凍してコピーすることは可能でしょうか? ?

それで

for($i = 0; $i numFiles; $i++) {

$filename = $zip->getNameIndex($i);

if(!is_dir($filename)){

copy("zip://".$path."#".$filename, $topath.$filename);

}その他{

@mkdir($topath.'/'.$filename, 0777);

}

}

問題は解決しました。 この問題を探すのに丸一日を無駄にしてしまいました。 ! 同じファイルに遭遇し、解凍時に紛失してしまった学生の役に立つことを願っています。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。