php開発日記

PHP開発で日々発生した対応などの備忘録

Laravelのログファイルで権限エラー

laravelで開発をしているといきなりエラーが発生し困惑。

そういうときは大体 artisanでbatchを起動した後だったりする。。。


経緯 : 突然 Webシステムにて500エラーが発生


原因 : ログファイルを調べると所有者がrootになっていて,apacheユーザが書き込めなくなっていた。

 

1. artisanで作成したバッチプログラムが失敗する → exceptionが発生する → cronなどで実行されているとroot起動となり

ログファイルにroot権限で書き込みに言ってしまう。


2. その後 Webシステムでログを下記にいくとログの所有者がrootのためapacheユーザで書き込めなくてエラーとなる。

 

対処 : 以下のようにバッチ起動の場合とWebシステム起動の場合で切り分けるとログが分かれるので対処可能

 

bootstrap/app.php内の「return $app;」の前に記載する。


$app->configureMonologUsing(function ($monolog) {

    if (\App::runningInConsole()) {

        $filename = storage_path('logs/laravel-batch.log');

    } else {

        $filename = storage_path('logs/laravel-web.log');

    }

   $handler = new Monolog\Handler\RotatingFileHandler($filename);

   $monolog -> pushHandler($handler);

});