ログファイルの注意点

Date2026/09/02 Last Modified2026/09/02

概要

とある日次で実行しているバッチがあり、それが失敗しているということで原因を調査し修正を行った。
そして、翌日の朝に本番環境にSSHで接続してバッチを実行したところ成功。無事に直ったかと思ったら……まさかの失敗。
原因は簡単だったけれど、備忘録として。

原因と結論

Laravelで作成したアプリケーションで、毎日バッチを実行したら「日付+実行処理名.log」というファイルができるように組んでいた。
毎日新しいファイルが作成されるのだが、朝にSSHで接続してバッチを実行したユーザーがec2-userだった。
その結果、バッチはapacheユーザーとして実行されるので、ログファイルの上書き権限が無く"バッチ失敗"と出てしまった。

ログを書き込めないとしても処理自体は実行すべきなのか、どうするかの議論もあるところだけれども……。

対策

ひとまず目先のec2-userでやってしまったファイルは、直接権限変更を行うとして、 今後もこういった場面があると思うので権限設計が必要。

// config/logging.php

'batch' => [
    'driver' => 'daily',
    'path' => storage_path('logs/batch.log'),
    'level' => env('LOG_LEVEL', 'debug'),
    'days' => env('LOG_DAILY_DAYS', 7),
    'permission' => 0664,
    'replace_placeholders' => true,
],

このようにログファイル自体に0664にしておけば、実行ユーザーの違いでこのエラーは防げるかと思う。
もしこの設計において、あんまり良くないことがあるのだとしたら、見直していきたい。