さくらインターネットでCakePHP3のShellをcronする話
どうも、いくらです。
最近、ARIAへの熱が高まってしまい、
漫画を全巻大人買いしてしまいました。
さて、今回はさくらインターネットでCakePHP3を使うお話があり、
その中でcronによるバッチ処理を作る必要がありました。
その際、ハマってしまったので、記述してみようと思います。
そもそもCakePHP3が動かない!
さくらインターネットでは、CakePHP3が動きません。
その理由などはコチラの記事などに記載されている通り、
intlモジュールが入っていないことが原因です。
- さくらのレンタルサーバでCakePHP3を使うためにintl extensionを導入する方法
- http://blog.shg25.com/?p=138
そのため、モジュールを追加しましょう。
追加の方法などは、先ほどのサイト様で記載されているので、割愛させて頂きます。
そもそもシェルが実行されない!
作成した社内サーバで実行した内容は下記のような感じでしたので、
同様に実行してみました。
そしてこれが実行出来ませんでした。
1 |
10 * * * * cd /home/[ユーザー名]/www/[CakePHP3のプロジェクト名]; /usr/local/bin/php ./bin/cake.php [シェルファイルの接頭語(ex:Sample)] [シェル実行メソッド名] 1> /dev/null |
あれ?
何がおかしいんだろう?
社内サーバではきちんと動いてたのに・・・
さくらインターネット独自の仕様によるものだった
なんとなく思っていましたが、別のエンジニアに相談したら解決しました。
それはCakePHP3用に追加したモジュールが原因でした。
CakePHP3はintlモジュールが無いと動きません。
ですので、追加したモジュールを読み込むために、オーバーライド用のphp.iniを作成していたのです。
これを実行する際に読み込ませることで、無事実行させることができました。
1 |
10 * * * * cd /home/[ユーザー名]/www/[CakePHP3のプロジェクト名]; /usr/local/bin/php -c /home/[ユーザー名]/www/php.ini ./bin/cake.php [シェルファイルの接頭語(ex:Sample)] [シェル実行メソッド名] 1> /dev/null |
ポイントは 「-c /home/[ユーザー名]/www/php.ini」 を付けることです。
php.iniの場所は環境によって異なるので、みなさんの状況に合わせて読み替えてください。
こんなところで躓くとは思いませんでしたが、なんとか動いてくれたので一安心です。
ではでは。
POPULAR
-
のえる2021.11.02
-
PHPのセッションが勝手に消えてしまう問題と解決法
のえる2019.08.23
いくら
IT Specialist