TRY AND ERRΦR

気になったこと、勉強したこと、その他雑記など色々メモしていきます。。Sometimes these posts will be written in English.,

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.phpphpのバージョンを指定して叩くことで対応しました。

15 0 * * * /usr/bin/php70 /full/path/to/app/bin/cake.php myshell myparam