PHP を使用した ZIP ファイルの抽出
PHP を使用してファイルを解凍しようとすると、URL を介してファイル名を渡すときに問題が発生する可能性がありますコードに見られるように:
<?php $master = $_GET["master"]; system('unzip $master.zip'); // Incorrect syntax ?>
構文
主な問題は、system() 呼び出しの構文にあります。正しい構文は、次のようにシステム コマンドを呼び出すことです。
system("unzip $master.zip");
組み込み PHP 関数の使用
system() 関数はタスクを実行できますが、一般的には推奨されません。 PHP には、ZipArchive などの圧縮ファイルを処理するための組み込み拡張機能が用意されています。以下は ZipArchive の使用例です。
<?php $zip = new ZipArchive; $res = $zip->open('file.zip'); if ($res === TRUE) { $zip->extractTo('/myzips/extract_path/'); $zip->close(); echo 'Extraction successful!'; } else { echo 'Extraction failed: ' . $zip->getStatusString(); } ?>
追加の考慮事項
現在のディレクトリに抽出するためのソリューション
ZIP ファイルをそれが存在するディレクトリと同じディレクトリに抽出するには、ファイルへの絶対パスを決定できます。ファイルを抽出し、それを抽出ターゲットとして指定します:
<?php $file = 'file.zip'; $path = pathinfo(realpath($file), PATHINFO_DIRNAME); $zip = new ZipArchive; $res = $zip->open($file); if ($res === TRUE) { $zip->extractTo($path); $zip->close(); echo "Extraction complete!"; } else { echo "Extraction failed: " . $zip->getStatusString(); } ?>
以上がPHP を使用して ZIP ファイルを安全かつ効率的に抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。