PHPExcelをつかってExcelファイルを作成、ダウンロードをしようとした際にプログラムを実行してもダウンロードどころかExcelファイルが作成されないという事象が発生しました。
そのような事象が発生した場合の確認ポイントと対処方法を記載します。
エラー内容
ログファイル(Error.log)を確認すると以下のようなログが出力されていました。
[01-Nov-2021 00:49:52 UTC] PHP Warning: ZipArchive::close(): Failure to create temporary file: No such file or directory in /home/・・・/wp-content/themes/・・・/Classes/PHPExcel/Writer/Excel2007.php on line 388
[01-Nov-2021 00:49:52 UTC] PHP Fatal error: Uncaught exception 'PHPExcel_Writer_Exception' with message 'Could not close zip file ./excel/sample.xlsx.' in /home/・・・/wp-content/themes/・・・/Classes/PHPExcel/Writer/Excel2007.php:389
Stack trace:
エラーの内容からするとファイルを作成するためのフォルダが見つからないと言っているようです。
対処方法
権限設定
Excelを作成するためのフォルダをPHPコード内で設定しますが、そのフォルダの権限を確認します。ファイルを作成するので書き込み権限が必用となります。パーミッション777を設定しておけばひとまず問題なしです。
パス設定
PHPコード内でExcelの出力パスを設定しますが、その際に相対パスではなく絶対パスを指定します。相対パスの場合は実行するフォルダによって階層が変わってきますので絶対パスを記載しておけば問題ないです。
Excelファイルの作成成功!
上記2つの対応を行うことで、Excelファイルの作成及び後続処理であるExcelファイルのダウンロードまで対応することができました。