このプロジェクトでは、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);
}
}
問題は解決しました。 この問題を探すのに丸一日を無駄にしてしまいました。 ! 同じファイルに遭遇し、解凍時に紛失してしまった学生の役に立つことを願っています。