Laravelのキャッシュファイル権限とログファイル権限が原因でQueueの実行に失敗した話

2020年3月27日金曜日

Laravel Queue

t f B! P L

正しい解決策ではないと思うのですが、結構時間かかったので自分用メモとして残しておく。

開発環境へ反映し、サーバ上で下記コマンドを実行した。

$ php artisan queue:work

 [error]
 file_put_contents(../storage/framework/cache/data/ee/2f/ee2f842aa7bb1f53edf3a2ed2c09a1807ffa6c90): failed to open stream: No such file or directory

おやっ・・・?
まず調べてみると、「2f/ee2f842aa7bb1f53edf3a2ed2c09a1807ffa6c90」が存在しなかった。
cacheなんだから自動で作られるんじゃ・・・?と暫く悩んだのですが、
cacheディレクトリの権限が755、所有者がapacheのため、apache以外のユーザでQueueを実行するとcacheが生成できなかったようです。
正しい解決策ではなさそうですが、要はapacheユーザでコマンドを実行してあげれば良いので、
apacheユーザになってQueueを実行してみました。

 $ sudo su -s /bin/bash apache
 $ cd projectディレクトリに移動
 $ php artisan queue:work

無事cacheが生成されました。
次に、再びapache以外ユーザでQueueを実行すると下記のエラーが発生しました。

$ php artisan queue:work

 [error]
 UnexpectedValueException : The stream or file “../storage/logs/laravel-2020-03-24.log” could not be opened: failed to open stream: Permission denied

こちらも色々調べてみると、権限644、所有者apacheで「laravel-2020-03-24.log」が生成されているのに対し、
Queueを実行しようとしているユーザがapacheユーザではないため発生していました。
こちらも上述した方法で一旦解消しました。

今の所、
最終的にはSupervisorを使ってapacheユーザで実行して解消しようと考えています。
もともとmigrationなど実行しない想定で作られていて、そこら辺を考慮したインフラ設定になっていないのでは・・・?
とも思っています。詳しくないので、そこら辺も分かるようになりたいところです。

注目の投稿

composer.lockはGit管理すべき話

# 背景 # 結論 # composer installとcomposer updateの違い # 背景 仕事では主にLaravelを使用して開発を行っている。 ソースコードはGitでバージョン管理を行い、compose...

プロフィール

7年ほど中小企業でSIerとして働いていました。 現在は個人事業主としてPHP, Javascriptの企業案件をメインに受けています。 最近はポケモンカードの開封にはまっています。

アーカイブ

このブログを検索

QooQ