LaravelにてCacheエラー “Unable to create lockable file..”の解決策

Laravelに限らずキャッシュとは便利なものです

でも今回はそのキャッシュに悩まされました

▼ こういう感じのエラーに遭遇

この発生原因はLaravelというよりサーバーにあります

解決策が分かったのでシェアしておきます

Cache系のトラブルに遭遇した経緯

こういうコードがありました

▼ キャッシュ期間1日でキャッシュするコード

Laravelのキャッシュ系メソッドの1つである Cache::remember()  を使ってた時です。他にも Cache::put()  とか Cache::forever()  とかもありますね。

そこで冒頭のエラーが出たというわけです。

▼ 発生したエラーの詳細

こういうエラーが定期的に起きてます。

原因としては少し意外なところにありました。

原因はキャッシュファイルの所有権にあった

原因はパーミッションでした。

Laravelを動かしてたのはAWS内のことです。

そして次の2つのユーザーがありました

  • ec2-user:ec2-user
  • apache:apache

そしてキャッシュファイルの権限を調べたんです

▼ ls -al してみたら…

所有者が ec2-user:ec2-user のやつと apache:apache であるキャッシュディレクトリが混在しちゃってます。これがエラーの原因らしい

エラーが発生してたPHPスクリプトはCronに登録しており、 ec2-user:ec2-user ユーザーとしてCronジョブを定期実行してました。

ところがキャッシュディレクトリは apache:apache として生成され、所有者が違うとのことでエラーが出ていたみたいです。

最終的には再帰的にchownをして所有者変更した

そこで次のchownを実行しました

これでキャッシュエラーは解決

以上、LaravelのCacheエラーが出た話でした。ではまた

もし他のCache系トラブルがあれば教えてください。

コメント欄から情報シェアいただくとありがたいです。