【Zip】zipがうまく解凍できないときに試してみること一覧

PHP
ArtisticOperations / Pixabay
この記事は約4分で読めます。

最初に

先日zipの解凍がうまくできず、何回やっても「hoge.zip」→「hoge.zip.cpgz」になってしまうという自体に陥ってしまったので、もう二度とやらないために備忘録として残して起きます。

ちなみに環境はMacOSの想定ですが、Windowsでもほぼ同様にできるかと思います。

ダウンロードするまでの流れの把握と切り分け

まず、おおよそダウンロードするまでの処理はこんな感じですね。

サイト・システムにファイルを保存する

zip圧縮する

ブラウザ等からダウンロードする

zip解凍する

この作業のどの部分で失敗しているのか、どこまでは大丈夫なのか見極めながら作業を進めていきましょう。

ちなみにサイト・システムの管理者ではない場合、ダウンロードする前の段階の問題だった場合には何もしようが無いので、その際にはいさぎよく諦めましょう笑

zip圧縮するときにすでにうまく行ってなさそうな場合

zip圧縮したファイルをサーバーで解凍、またはscpとかを使ってローカルに持ってきて解凍して見ましょう。
もしくはコマンドライン上でファイルのタイプを確認してzipと認識できているかチェックしてみましょう。

// ファイルのタイプを確認
// zipファイルの場合
$ file hoge.zip
hoge.zip: Zip archive data, at least v2.0 to extract

// 破損している可能性が高いファイルの場合
$ file fuga.zip
fuga.zip: data

この時点でうまく行ってない場合には、次のことを試してみましょう。

圧縮側のツールを最新 or 古いものに変更

ツールを変更することで解決することがあるそう。

日本語のファイル/フォルダ名を全部潰してみる

日本語を利用してたらうまく行かない事例があるようなので試してみると良いかもしれないです。
ただ、ファイル数が多かったり何らかの理由で変更できないという場合もあるので、他の方法を試してみてからでも良いと思います。

ダウンロードするときにうまく行ってなさそうな場合

サーバー上でのunzipやscpでローカルに持ってきての解凍が大丈夫だった場合、ダウンロードする方法に何かしらの問題があると考えられますので、次の方法を試してみましょう。

ブラウザを変更してみる

Chromeだとだめだったけど、FireFoxなら行けたなどのパターンもあるようなので試してみましょう。
https://kouichirou.aomori.jp/2016/12/16/cpgz-zip/

var_dump、またはechoなどを使っていないか確認する

ソースコード側のダウンロードの処理にて、filereadなどを使っている近くで、var_dump()などを利用していると、headerがうまく作成されずにデータが破損してしまうことがあります。
なので近くにあるvar_dump、echoを排除してみましょう。

解凍する際にうまく行ってなさそうな場合

ダウンロードしたファイルをfileコマンドで確認してみてちゃんとzipファイルっぽい表記になっていた場合、解凍の仕方が悪い可能性があリます。

// ファイルのタイプを確認
// zipファイルの場合
$ file hoge.zip
hoge.zip: Zip archive data, at least v2.0 to extract

// 破損している可能性が高いファイルの場合
$ file fuga.zip
fuga.zip: data

unzipコマンドで解凍してみる

// ターミナルで直接解凍
$ cd  Download
$ unzip hoge.zip

解凍用のアプリを最新 or 古いのものに変更

圧縮と解凍のzipバージョンが異なっているとうまく行かないことがあるよう??なので、うまく合わせられる人は合わせてみて、無理そうな人は取り合えず最新のものと少し古いものを試してみましょう。

まとめ

なんかいろんな記事しらべてたら、「解凍するときに使うツールをこれにすれば大丈夫!!」みたいなのばっかりでしたが、いろんな可能性があるのでその人はたまたまそれでうまく行ったけど、自分がその事象がどうかは切り分ける必要がありますね。。。

ネットの情報は取捨選択が難しいですなー。

ちなみにめちゃくちゃ余談ですが、破損したファイルを作成してくれるサービスがあります笑

海外のサイトですが興味があれば見てみてください。
http://www.xnet.se/fd/

あと他にも高パターンのときにcpgzになってしまったっていうのがあればどんどん追加していきます!
※無いことを祈りたいですが。。。

コメント

タイトルとURLをコピーしました