laravelでcronによる処理と、管理画面などのログインが共存しているとタイトルのようなエラーになる場合がある。というか私の場合だけかもですがありました。
原因は/storage/framework/cache/data/配下のディレクトリ、ファイルのパーミッションが
ログイン時:個人ユーザー
cron実行時:nginxユーザー
とで作成されるために、どちらかのユーザーでchownとかしても一時的に解決するだけで永続的な解決法ではなくなっていたためでした。
プログラム的になんとかする方法(ログイン時ユーザーをnginxでcacheさせるようにする等)もあると思いますが、今回はlinux側での対応を行ったので、備忘録です。
cacheディレクトリ、ファイルのパーミッションが問題なので、そもそも新規に作成される場合のパーミッションを指定・固定します。
$ cd /storage/framework/cache/
$ sudo setfacl -R -d -m g::rwx ./data
setfaclでdataディレクトリ配下で作成されるディレクトリ、ファイルのパーミッションをdataと同じにするものです。
※上記操作と共に既存ディレクトリ、ファイルのchmodも忘れずに
※作成される可能性のあるユーザー(個人ユーザー、nginx)を同一のグループに所属させる事も忘れずに
これで、ユーザーは異なるものになる可能性はありますが、パーミッションは書き込み可能となるのでエラーにはならなくなりました。
「お前は何を言っているんだ?」という人は以下を参照ください。この記事の1000倍くらい丁寧に解説されています。