【laravel8】Please ensure you have permission to create files

Posted by yonezo in 日記 | Leave a comment
Pocket

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倍くらい丁寧に解説されています。

CentOS/Apache/Laravel使用時のpermission設定方法

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です