くわこのpermission denied.

WEBエンジニアの僕がぶつかった技術的な問題や発見

Laravelでログローテートするとcronでartisanバッチを実行できなかった話

f:id:mask0702:20150609201407p:plain

Laravelでログローテートすると、ログファイルが 644のapche:apacheで作成されてしまうのでcrontabでartisanバッチを実行するとPermission denied. で実行できないことありました。

この対策として、当初artisanバッチをrootで実行することで解決していましたが、それだと今度はapache側でログファイルが作られる前にartisanバッチが動くとroot:rootの644のログファイルができてしまい、サービス側がログファイルにアクセスできないことに気づきました笑

どうしたものかと考えていたところ、
「バッチをapacheユーザーで実行すればいいじゃん」
というなぜそれまで気づかなかった...的な名案が生まれたのでapacheユーザーでバッチを実行することにしました。

sudo su apache

This account is currently not available.

できない...だと...

と思って絶望してたら以下の記事を見つけました笑kimagureneet.hatenablog.com

sudo crontab -u apache -e

でcrontabの中身を移し替えてことなきを得ました。