ZipArchive でパスワード付き ZIP ファイルを作成する

PHP で ZipArchive を利用したパスワード付き ZIP ファイルを Windows の標準機能で解凍すると、次のエラーが発生することがあります。

エラー 0x80004005: エラーを特定できません

これは Windows 標準の圧縮ファイルの解凍が ZipArchive で指定した暗号化方式に対応していないためです。

そのため、暗号化方式を PKWARE 仕様にすることで Windows で問題なく解凍できます。

$zip = new ZipArchive;
$zip->open([ZIP ファイルのファイル名]);
$zip->addFromString([ZIP ファイルに追加するファイル名], [ファイルデータ]);
$zip->setEncryptionName([ZIP ファイルに追加するファイル名], ZipArchive::EM_TRAD_PKWARE, [パスワード]);
$zip->close();

Comments

コメントする