zip圧縮自体はうまくいってるのだけれど、ZipArchiveのextractToで解凍すると日本語部分が消えてしまう問題が発生しました。
たとえばファイル名が
サンプル-1.jpg
という場合、解凍すると
-1.jpg
となってしまいます。
調べたところ、ZipArchiveはPHPで設定されているlocaleに依存するとのこと。
ZipArchiveで日本語ファイル名を扱えない場合があって困った話 - Qiita
ということであれば、同じプログラム内で事前にlocaleの設定を変えればいいんじゃね?と思い、ZipArchiveをインスタンス化する前に、下記を追記しました。
[PHP]
if (setlocale(LC_ALL, 'ja_JP.UTF-8') === false) {
error_log('Locale not found: ja_JP.UTF-8');
exit(1);
}
[/PHP]
日本語ファイルでもうまく解凍できるようになりました!