PHPのZipArchive::addFileでファイルが追加できない場合の対応方法
過去記事を参考にPHPにて複数のファイルをzipファイル化後、ダウンロードさせたかった。ただ、ZipArchive::addFileがうまく動いていないのか、中身が空のzipファイルがダウンロードされてしまう。また、エラーログには何も出力されていないという状況。以下に原因と対応方法をメモ。
原因
ファイル名に「/(半角スラッシュ)」が入っていたためと思われる。
詳細としてZipArchive::addFileの第2引数を指定していなかった。そうすると第1引数のfilepathのファイル名でaddFileされるが「/path/to/file.txt」のような形で指定していたため「/」が入っており正常にaddFileされなかったものと思われる。
対応方法
basename関数を用いて第2引数を設定する。
$zip->addFile($file, basename($file));
もしくは別途ファイル名を指定しても良い。
所感
エラーログに何も出力されていなかったので原因を特定するのに時間がかかった。同じことではまらないよう覚えておきたいところ。
関連記事
-
-
PHPにて特定の処理にかかった時間とメモリ使用量を測定する方法
PHPにて特定の処理にかかった時間とメモリ使用量を測定したい。以下にソースコード ...
-
-
PHPでJavaScriptを圧縮するライブラリ「JShrink」の利用方法
サイト内でJavaScriptを用いる場合、外部のライブラリやプラグインだと圧縮 ...
-
-
PHPからWebAPI(screendot)経由で他サイトのスクリーンショットを取得する方法
PHPで他サイトのスクリーンショットを取得したい。今回はライブラリは無しで実現し ...
-
-
PHPとPAY.JPを用いてサイト内にクレカ決済及びキャンセル機能を実装する方法
先日PHPとStripeを用いてサイト内にクレカ決済及びキャンセル機能を実装する ...
-
-
PHPで「Warning: date(): It is not safe to…」エラーの対応方法
PHPでdate関数を使った際に「Warning: date(): It is ...