PHPのfopenでCSVファイルが保存されない時の確認事項について説明します。今日、私がハマって数十分を費やしてしまった事例になります。
エラーが出ていないか確認する
下記のコードでエラーを表示させられるようになります。
ini_set('display_errors', 1);
パーミッションに注意
案の定、エラーが発生していました。下記は、パーミッションの問題でファイルを開けないというエラーです。
Warning: fopen(data.csv): failed to open stream: Permission denied in …
今回の例では、data.csvはまだ存在しておらず、新しくファイルが作成されることを期待しています。
ファイルを作成するディレクトリ(test)の所有者を確認したところ、apacheになっていませんでした。
ls -l drwxrwxr-x 2 username username 4096 Aug 18 2022 test
所有者をapacheに変更します。
chown -R apache:username test ls -l drwxrwxr-x 2 apache username 4096 Aug 18 2022 test
エラーが出なくなり、CSVファイルが作成され、データを保存できました。