CodeIgniterにはZIP圧縮が手軽に出来るクラスが用意されています。
今回これを利用して色々とやろうとしたらZIPファイルが壊れたものしか生成されない現象に遭遇。
原因としては圧縮されたファイルの先頭になぜかゴミが紛れ込んでいたために発生したものでしたが、ゴミの混入の原因が微妙だったので書いてみます。
圧縮ファイルを作成するにあたってvardumpでpostなんかのデータの流れをみていたのですが、どうも圧縮ファイルがうまく生成されない。
dump内容を見てもとくにおかしなデータが流れているわけでもなく、ちょっと行き詰まりかけていました。
実際に作成された圧縮ファイルを解凍しようとしても破損ファイルとして認識されたりしている。
しかし、解凍せずに中身のファイルを確認出来るソフトで見てみるとファイルはたしかにちゃんと入っている・・・。
そこでファイルをとりあえずテキストエディターで見てみると先頭になにやらいろんな文字がついている。見覚えのある文字でどうやらPOSTされた内容が混入しているらしい。
しかし当然のことながらzipファイルへのadddataにPOSTのデータが混入しているわけでもなく・・・。
色々とデータを比較してみるとどうやらdumpと同じ内容であることが判明。
そこでdumpを削除してみたところ正常にZIP圧縮ファイルが生成されました。
どこでどうなってdumpの内容が勝手に入ったのかはわかりませんが、もしCodeIgniterのZIP圧縮クラスでうまくファイルが生成されない場合はdumpなんかを確認してみるといいかもしれません。
関連記事