Cakephp3のShellがcronで動かなかった理由
デイリーの集計絡みのバッチを書いていてちょいはまったのでメモ。
まず、 CakeのShellをcronで叩く際のOfficialの記載はこう
15 0 * * * cd /full/path/to/app && bin/cake myshell myparam
これが動かなかった。
次に試したのは、そもそもcdする必要ないんじゃないかということで
こんな感じでやった。
15 0 * * * /full/path/to/app/bin/cake myshell myparam
しかしこれもだめ。
cron通さずに普通に実行してみると、これは動いた!
$ /full/path/to/app/bin/cake myshell myparam
ログを出してみると、cronで叩いたときのphpのバージョンが違っていたので、
今回はcakeの問題ではなかった。。
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mecab.so' - /usr/lib64/php/modules/mecab.so: cannot open shared object file: No such file or directory in Unknown on line 0 PHP Fatal error: You must enable the intl extension to use CakePHP. in
バイナリではなくbin/cake.phpをphpのバージョンを指定して叩くことで対応しました。
15 0 * * * /usr/bin/php70 /full/path/to/app/bin/cake.php myshell myparam