【PHP】パスワード付きzipファイルの生成

通常PHPでzipファイルを作成するときには以下のようにしてZipArchiveクラスを使用して作成すると思います。

$zip = new ZipArchive();
$res = $zip->open('./zip/hoge.zip', ZipArchive::CREATE);

if ($res === true) {
    $zip->addFile('hoge.png');
    $zip->addFile('hoge.jpg');

    $zip->close();
}

このZipArchiveクラスを用いてパスワード付きのzipファイルを生成しようと思い、setPassword()関数が存在するのでそれを使用しようとしたのですが、できませんでした。

http://php.net/manual/ja/ziparchive.setpassword.php

このsetPassword()関数は解凍専用で、圧縮時には使えないそうです。

現状、PHPでパスワード付きのzipファイルを生成するには以下のようにexec()関数を用いてzipコマンドを呼び出す方法しかなさそうです。

exec("zip -jP $password $file1 $file2");