CakePHP3.xをWebとバッチで同時に使う場合の設定

Pocket

CakePHPはログやキャッシュをファイル管理しているためLinux系のOSの場合permissionの問題がよく起こる。tmpやlogsフォルダの権限設定を正しく行う事でこれを回避できる。

一般的にLinux系のサーバではApacheのユーザとcronジョブで実行するユーザが異なる場合が多いため、ApacheによるCakePHPプログラムの実行とバッチジョブによる実行で書き込まれるキャッシュファイルやログファイルの権限で問題がでる事がある。

以下のコマンドを環境で1回だけ実行しておく事でtmpフォルダとlogsフォルダの設定を正しく行う事ができる。

$ HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1`
$ setfacl -R -m u:${HTTPDUSER}:rwx tmp
$ setfacl -R -d -m u:${HTTPDUSER}:rwx tmp
$ setfacl -R -m u:${HTTPDUSER}:rwx logs
$ setfacl -R -d -m u:${HTTPDUSER}:rwx logs

記事が役に立ったらぜひシェアをお願いします。

Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *