Edited at

【Laravelでエラー対処】PHP Fatal error: Uncaught UnexpectedValueException: The stream or file "/var/www/base_path/storage/logs/laravel-yyyy-mm-dd.log" could not be opened: failed to open stream: Permission denied

More than 1 year has passed since last update.

LaravelのWebサーバーにリクエストした際、以下のようなエラーが出力され、期待した処理が行われない場合の原因と対策。

エラー出力



tail -f /var/log/httpd/error_log # WebサーバーがApacheの場合

PHP Fatal error: Uncaught UnexpectedValueException: The stream or file "/var/www/base_path/storage/logs/laravel-yyyy-mm-dd.log" could not be opened: failed to open stream: Permission denied

Laravelのエラーログには出力されず、*Apacheのエラーログに出力される。

*Webサーバーの種類は環境による

原因

Laravelのlogファイルにapacheユーザーが書き込み権限を持たないため、logに書き込めずに例外が発生している。

[root@prod_sv /]# ls -latr /var/www/base_path/storage/logs/

合計 1819392
...
-rw-r--r-- 1 apache apache 597379535 4月 29 23:59 laravel-2017-04-29.log
-rw-r--r-- 1 apache apache 116592494 4月 30 23:59 laravel-2017-04-30.log
-rw-r--r-- 1 apache apache 54962096 5月 1 23:59 laravel-2017-05-01.log
-rw-r--r-- 1 root root 817338 5月 2 00:23 laravel-2017-05-02.log
drwxr-xr-x 2 apache apache 4096 5月 2 00:23 .

このように-rw-r--r-- root root などの権限だと、apacheユーザーが書き込めない。

対策

・logファイルを削除する(場所を変更・名前を変更でも可)



# logファイルを削除する

# rm -r /var/www/base_path/storage/logs/laravel-2017-05-02.log

・logファイルの権限を変更する(apacheユーザーに書き込み権限を付与)



# logファイルの所有者・所属グループをapache:apacheに変更する。

# chown apache:apache /var/www/base_path/storage/logs/laravel-2017-05-02.log

これで解決。