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);
});