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でmysqli関数使用時のプリペアドステートメントの利用方法
PHPでMySQLを扱う際はmysqli関数を、エスケープの際はreal_esc ...
-
-
formにGoogle reCAPTCHA v3を組み込み、PHPでスコア判定する方法
だいぶ前にGoogle reCAPTCHA v2をformに組み込むという記事を ...
-
-
Google Maps APIとPHPを組み合わせて複数マーカーとウィンドウを連携させる方法
やりたかった事は以下の通り。 mysqlから経度緯度、マーカー名、マーカーIDを ...
-
-
PHPでJSONデータを見やすく整形した上で表示させる方法
PHPで何らかのデータをjson_encodeでJSONに変換し、そのままech ...
-
-
PHPでエラーログ等のログファイルから指定した行数を表示させる方法
エラーログを最新分から指定行数表示させる プログラムがあって、どういった作りにな ...