勉強したことのメモ

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

  関連記事

PhpSpreadsheetでセル内の文字列の改行、セル幅の自動調整を行う方法
PhpSpreadsheetでセル内の文字列の改行、セル幅の自動調整を行う方法

以前PHPとPhpSpreadsheetを用いてExcelシートを出力する方法を ...

Cookieをできるだけ長い期間保存する方法
Cookieをできるだけ長い期間保存する方法

あるシステムの中でCookieを可能な限り長い期間保存したいというリクエストを受 ...

CodeIgniter4で簡易版ログインシステムの実装方法(管理画面向け)
CodeIgniter4で簡易版ログインシステムの実装方法(管理画面向け)

CodeIgniter4で管理画面向けの簡易版ログインシステムを作成したい。通常 ...

PHPでCookie保存時にPartitioned属性を設定する方法
PHPでCookie保存時にPartitioned属性を設定する方法

あるページをブラウザの開発者ツールで見た際に「cookie partitione ...

PHPで指定日から曜日を割り出す
PHPで指定日から曜日を割り出す

曜日ってどうやって割り出すの? となったのでメモ。 ■リファレンス http:/ ...