勉強したことのメモ

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

  関連記事

CodeIgniter4で特定のページにアクセスがあった際に301リダイレクトさせる方法
CodeIgniter4で特定のページにアクセスがあった際に301リダイレクトさせる方法

CodeIgniter4で特定のページにアクセスがあった際に301リダイレクトさ ...

AlmaLinux8系に異なるバージョンのPHPをインストールする方法
AlmaLinux8系に異なるバージョンのPHPをインストールする方法

AlmaLinux8系&Apache2.4系の環境に異なるバージョンのP ...

時間と数字のフォーマット
時間と数字のフォーマット

教わったのでメモ。 ・時間の整形 strtotime() 例) $ymd = ' ...

PHPとLINEを連携させて通知を送る方法(file_get_contents / curlの2パターン)
PHPとLINEを連携させて通知を送る方法(file_get_contents / curlの2パターン)

PHPとLINEを連携させ、LINEに何らかの通知メッセージを送信したい。以下に ...

PHPを用いてフォームからzipファイルをアップロードしサーバ上で解凍(展開)させる方法
PHPを用いてフォームからzipファイルをアップロードしサーバ上で解凍(展開)させる方法

formからzipファイルをアップロードしサーバ上で解凍(展開)するという一連の ...