[PHP] fopen()でCSVファイルが保存されない時の確認事項

PHP

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ファイルが作成され、データを保存できました。

広告