BLOG

Blitz Gateスタッフブログ

BLOG

さくらインターネットでCakePHP3のShellをcronする話

書いた人:

CakePHP3 , 技術  

blogimg_sakura_cakephp

どうも、いくらです。

 

最近、ARIAへの熱が高まってしまい、
漫画を全巻大人買いしてしまいました。

 

さて、今回はさくらインターネットでCakePHP3を使うお話があり、
その中でcronによるバッチ処理を作る必要がありました。

 

その際、ハマってしまったので、記述してみようと思います。

 


 

そもそもCakePHP3が動かない!

 

さくらインターネットでは、CakePHP3が動きません。
その理由などはコチラの記事などに記載されている通り、
intlモジュールが入っていないことが原因です。

さくらのレンタルサーバでCakePHP3を使うためにintl extensionを導入する方法
http://blog.shg25.com/?p=138

 

そのため、モジュールを追加しましょう。
追加の方法などは、先ほどのサイト様で記載されているので、割愛させて頂きます。

 

そもそもシェルが実行されない!

 

作成した社内サーバで実行した内容は下記のような感じでしたので、
同様に実行してみました。
そしてこれが実行出来ませんでした。

 

10 * * * * cd /home/[ユーザー名]/www/[CakePHP3のプロジェクト名]; /usr/local/bin/php ./bin/cake.php [シェルファイルの接頭語(ex:Sample)] [シェル実行メソッド名] 1> /dev/null

 

あれ?
何がおかしいんだろう?
社内サーバではきちんと動いてたのに・・・

 

さくらインターネット独自の仕様によるものだった

 

なんとなく思っていましたが、別のエンジニアに相談したら解決しました。
それはCakePHP3用に追加したモジュールが原因でした。

 

CakePHP3はintlモジュールが無いと動きません。
ですので、追加したモジュールを読み込むために、オーバーライド用のphp.iniを作成していたのです。
これを実行する際に読み込ませることで、無事実行させることができました。

 

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の場所は環境によって異なるので、みなさんの状況に合わせて読み替えてください。

 

こんなところで躓くとは思いませんでしたが、なんとか動いてくれたので一安心です。
ではでは。

  • このエントリーをはてなブックマークに追加