勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPのZipArchive::addFileでファイルが追加できない場合の対応方法

  PHP

過去記事を参考にPHPにて複数のファイルをzipファイル化後、ダウンロードさせたかった。ただ、ZipArchive::addFileがうまく動いていないのか、中身が空のzipファイルがダウンロードされてしまう。また、エラーログには何も出力されていないという状況。以下に原因と対応方法をメモ。

 

原因

ファイル名に「/(半角スラッシュ)」が入っていたためと思われる。

詳細としてZipArchive::addFileの第2引数を指定していなかった。そうすると第1引数のfilepathのファイル名でaddFileされるが「/path/to/file.txt」のような形で指定していたため「/」が入っており正常にaddFileされなかったものと思われる。

 

対応方法

basename関数を用いて第2引数を設定する。

$zip->addFile($file, basename($file));

もしくは別途ファイル名を指定しても良い。

 

所感

エラーログに何も出力されていなかったので原因を特定するのに時間がかかった。同じことではまらないよう覚えておきたいところ。

 - PHP

  関連記事

wp_mail関数でエンベロープFrom(Return-Path)が指定できない場合の対応方法

WordPress内に設置されたお問い合わせのフォームようなシステムでエンベロー ...

PHPで「ramsey/uuid」ライブラリを用いてUUIDを生成する方法

PHPでUUID(Universally Unique Identifier)を ...

PHPからMySQLにシリアライズしたデータを格納

アンケートフォームみたいなのがあって、 今後も定期開催し、尚且つ質問内容は増減す ...

PHPで配列を確認する際にvar_dumpよりも見やすくなるdBug.phpの利用方法

PHPで配列を確認する際、大抵var_dumpで出力させているがこれが見づらい。 ...

PHPのswitch文で「>」「<」等、比較演算子の使用について

switch文は指定の変数が、特定の値もしくは文字列だった場合のみに使うようなも ...