という問題が発生しました。一部のソフトでしか解凍できないです。
感覚的には、圧縮前のファイルサイズが1MBを超えていると、圧縮ファイルが壊れるような感じ。。 Lhaplusだと警告付きで解凍できますが、Windows のエクスプローラで開けません。
ですがいろいろ試した結果、サイズは特に関係なく、これ、php.ini で zlib.output_compression=On に設定していると発生するエラーのようでした。(もしかして常識?)
PHP: header – Manualを参考に、ダウンロードさせるコードの直前に、
if(ini_get('zlib.output_compression')) ini_set('zlib.output_compression', 'Off');
を記述すると、問題なく解凍できるようになりました。
CodeIgniterの場合は、system/libraries の Zip.php を継承して My_Zip.php を作り、download() メソッドあたりでこのコードを書いておけば良さそうです。