エス技研

CakePHP、PHP、WordPress、baserCMSなどの Web系システムを中心に情報を提供します!


CakePHP 2.3 コマンドラインからPHPのシェル実行の方法解説

      2015/06/15

CakePHPのプログラムをコマンドラインから実行する方法

 

CakePHPのプログラムをコマンドラインから実行する方法

 
CakePHPで Webシステムを作っている中で、cronなどで定期的に自動処理を実行したいと思う場面も出てくるでしょう。
 
CakePHPには、そんな時も CakePHPの処理を使ってコマンドラインから実行する方法が用意されています。
ここでは、その説明を行います。
 
 

CakePHPの 1.*系と 2.*系のシェルの作り方は全く違う

 
CakePHPの処理をコマンドラインから実行する際は、シェルという処理を使って作成をしますが、その作成の方法が CakePHPの 1.*系と、2.*系とで違っています。
 
ここでは CakePHP 2.*系の説明しかしませんが、1.*系の作成方法について知りたい方は、下記のサイトなどが参考になると思います。ファイルを置く場所も変っていますね。
 
 CakePHP 1.*系のシェルについて
 http://ucwd.jp/blog/570
 
 

コマンドラインから PHPを実行できるかの確認

 
CakePHP 2.*系のシェルの作成をする前に、1点確認です。
 
ここでコマンドラインから実行するコマンドは PHPのパスが通っていることを想定して書いています。
コマンドラインから PHPが実行できるかどうかを試すには下記のコマンドを実行してみるといいでしょう。
 

 
このコマンドは、PHPのバージョンを表示させる際に実行するものですが、下記の様に PHPのバージョンが表示されれば PHPのパスは通っていることが確認できます。
 

 
 
PHPのパスが通っていない場合は、PHPのパスを通す設定を検索していただいて、設定してください。 
 

CakePHPの 2.*系のシェルの基本的な作り方、使い方

 
ここから CakePHP 2.*においてシェルの作り方を説明していきます。
 
まず、標準出力するだけのサンプルを作ってみましょう。
 
/cake1/app/Console/Command/TestShell.php
——————–

——————–
 
ソース内にもコメントとして書いていますが「$this->out()」を利用して標準出力を行います。(コマンドを入力したコンソールに出力を返す処理です。)
 
そして、上記のサンプルで作成した CakePHPの shellをコマンドラインから実行する方法は、以下の通りとなります。
この実験は、Windowsの XAMPP環境で実行していますが、Linuxでも記述方法は同じです。
 

 
cake.phpファイルがあるディレクトリ(/{CakePHPがインストールされているパス}/app/console/)に移動した場合は、下記のコマンドでも実行できます。
 

 
一つ上位の親ディレクトリに移動した場合は、下記の様に相対パスの指定でも実行できます。(カレントディレクトリが /{CakePHPがインストールされているパス}/app/ にある場合)
 

 
このパスの指定のイメージは、bakeを行う場合と同じです。
例えば、カレントディレクトリが「/{CakePHPがインストールされているパス}/app/console/」の場合は、下記の指定で bakeを起動できることと同じです。

 
 
また、ここで cake.phpの引数として設定している「test」は、「/app/Console/Command/」フォルダの中にある「TestShell.php」を呼び出して実行することを指定していることになります。
 
ファイル名が「SampleShell.php」の場合は、「php cake.php sample」になります。
 
また、サンプルソースの中には、「function main ()」と「function test2 ()」とありますが、引数に何も指定しない場合は、「function main ()」の方がデフォルトとして実行されます。
ブラウザでアクセスして画面を表示させる際に引数がない場合は「function index ()」が呼び出されるのと同じイメージで、コマンドから実行する場合はデフォルトで「function main ()」が呼び出されると覚えておきましょう。
 
では、「function test2 ()」の方を実行する場合は、というと下記の様に「test」に続けて関数名(test2)を指定します。
 

 
 


 

CakePHPの 2.*系のシェルの作り方、使い方 その2

 
複数の単語を組み合わせたファイル名を付けた場合はどのようになるのか、の実験もしてみました。 
 
/cake1/app/Console/Command/TestFileShell.php
——————–

——————–
 
上記のプログラムを実行する場合、下記のいずれも OKでした。

 
また、関数を指定する場合は、下記の場合は、正しく関数「test_test」が呼び出されました。

 
ですが、下記のような記述方法では正しく関数「test_test」は呼び出されず「main」が呼び出されました。

 
当たり前と言えば当たり前ですが、関数名を「TestTest」とした場合は、「testtest」「TestTest」を引数にすると呼び出すことができ「test_test」とした場合は呼び出すことはできません。
CakePHPの命名規則上は、「test_test」が正しいのだと思いますが...
 
また、引数として指定した関数が存在しない場合は「main」が呼び出されるようです。
 
 

CakePHPの 2.*系のシェルに引数を渡す方法

 
CakePHPのシェルに引数(パラメータ、オプション)を渡す方法も 2.*系なって変更になっています。
 
こちらに関しては、また改めて実験をしてから記事にしたいと思いますが、下記の記事などが参考になるのではないでしょうか。
 http://karasunouta.com/blog/2012/10/07/cakephp2-shell-params/
 http://lab.adn-mobasia.net/?p=1014

 - CakePHP 2.x

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
  • このエントリーをはてなブックマークに追加

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

下記の空欄を埋めてください。 *

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

CakePHP 2.3で PDFを作成する方法を調査「mpdf」「TCPDF」「FPDF」
CakePHP 2.3で PDFを作成する方法を調査「mpdf」「TCPDF」「FPDF」

CakePHPで PDFを編集、出力するには「mpdf」「TCPDF」「FPDF」といったプラグインがあり、使い勝手を比較検討しました。TCPDFが一番良さそうでした。

CakePHP 2.3で確認画面付きのお問い合わせフォームの作り方
CakePHP 2.3で確認画面付きのお問い合わせフォームの作り方

CakePHPで確認画面付きのお問い合わせフォーム、メールフォームの作り方をサンプルを提示しながら解説。

CakePHP 2.3 Search Pluginで検索処理 その3入力エリア一つで複数の項目を同時に検索する方法
CakePHP 2.3 Search Pluginで検索処理 その3入力エリア一つで複数の項目を同時に検索する方法

CakePHPの検索プラグイン Search Pluginの検索処理の中で入力エリア一つで複数の項目を同時に検索する方法を解説。

CakePHP 2.3でファイルのアップロード処理を作る
CakePHP 2.3でファイルのアップロード処理を作る

CakePHPでプラグインを使わないファイルアップロード処理を解説します。簡単です。DBにファイルを格納する方法も。

CakePHP 2.3 デバッグキット(DebugKit)超初心者向けフォロー講座
CakePHP 2.3 デバッグキット(DebugKit)超初心者向けフォロー講座

CakePHP初心者に向けてデバッグキット(DebugKit)のインストール方法、はまりポイントを解説。

CakePHP 2.3 Search Pluginで検索処理 その5入力項目に複数項目入力した場合の AND検索、OR検索
CakePHP 2.3 Search Pluginで検索処理 その5入力項目に複数項目入力した場合の AND検索、OR検索

CakePHPの検索プラグイン Search Pluginの検索処理の中で複数項目を入力した場合の AND検索、OR検索についての解説です。

CakePHP 2.3 Search Pluginで検索処理 その1設置方法
CakePHP 2.3 Search Pluginで検索処理 その1設置方法

CakePHPの検索プラグイン Search Pluginの設置方法と基本的な検索処理の解説です。

CakePHP 2.x系 Viewでのコメントの記述方法など
CakePHP 2.x系 Viewでのコメントの記述方法など

CakePHPにおいて View、ctpファイルでコメントを記述する方法を解説。

CakePHP 2.3 Model、Controllerの見たい変数の中身をログ出力
CakePHP 2.3 Model、Controllerの見たい変数の中身をログ出力

CakePHPの Modelや Controllerの変数の中身をログとして出力して見る方法を提供します。

CakePHP 2.3でファイルをアップロード・その2 ファイル名を乱数で設定
CakePHP 2.3でファイルをアップロード・その2 ファイル名を乱数で設定

CakePHPのアップロードするファイル名を乱数で変更しセキュリティを高める方法を解説。