CLIを利用したPHPのデバッグ方法について調査&まとめ。
PHPスクリプトの実行は、Webサーバー経由での実行(CGI版)だけでなく、Webサーバーを経由せずコマンドライン上での実行(CLI版)が可能です。
(厳密に言うと、ApacheでPHPを実行する場合はCGI版ではなく、Apacheのモジュール「mod_php」経由=Apacheの一部としてPHPが処理されています。)
CLI シー・エル・アイ
【英】 Command Line Interface
PHP言語をコマンドライン上から実行するためのSAPI(Server Application Programming Interface)。PHPバージョン4.3からデフォルトでインストールされるようになった。CLI版のPHPは、カレントディレクトリの扱い、スクリプトの動作時間制限、エラーの表示方法などがCGI版と異なっている。
コマンドラインインタフェース (Command line interface) 。キャラクターユーザインターフェース(CUI)と同義。
キャラクタユーザインタフェース (character user interface、略称 CUI、和製英語)、コマンドラインインタフェース (command line interface、略称 CLI)は、コンピュータにおいて、キーボードを用いて入力を行い文字によって出力を行う様式のユーザインタフェースである。グラフィカルユーザインタフェース (GUI) の対義語として使われる。
CUI (character user interface) という呼称は基本的に日本だけで通用するものであり、英語圏などではCLI (command line interface) という呼称が使われる。
日本においても会話などではコマンドラインやコンソール(端末)と呼ばれることが多い。
phpコマンドにはCLI版(CLI SAPI)とCGI版(CGI SAPI)がある。これらはそれぞれシェル(コマンドライン)アプリケーション向け、CGIとしての実行向けになっており動作が異なる。
CLI/CGI版の大きな違いは、コマンド実行時にHTTPヘッダを出力するか否か。
CLI版はコマンドラインからの実行向けにコマンド実行時にHTTPヘッダを出力しない。
CGIとPHPは違う!と言って聞かない人がいます - CGI - 教えて!goo
CGIとは、Coomon Gateway Interface の略で、サーバーに対してクライアントから要求があった場合、その要求を「他のプログラム」に渡してそのプログラムに処理を任せる仕組みのことです。
他のプログラム、Perlやシェルスクリプト、Python、Ruby、C;;など色々な言語が使えます。・・・これらを【CGIプログラム】というが、【CGI】とは別。
PHPは、その意味では普通はCGIに含めることはしません。特にapacheユーザーは。
なぜなら、apacheでは、PHPは、mod_phpを使用するため、どちらかと言うと、SSI(Server Side Includes http://ja.wikipedia.org/wiki/Server_Side_Includes )に近いと考えたほうがよいからです。ただし、サーバーにAN-HHTTPDを使用する場合は、CGIとして動作させますし、WindowsIISで動作させる場合はISAPIを使用します。・・・apacheで動作している場合はCGIではないということです。
結論から言うと、CGIとPHPは別のものです。
# php -vとコマンドを打ちます。
PHP 5.4.15 (cli) (built: May 9 2013 08:20:20) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
という具合に、「(cli)」と表示されたら、CLI版としてビルドされたPHPインタプリターであることが分かります。
普通、PHPをパッケージでインストールしたら、CLI版になっているそうです。
手動でビルドする場合は、明示的にCLI版を指定してやればOKとのこと。
Linuxの場合、PHP CLI版がインストールされていて、パスが通っていれば、phpをコマンドとして実行できます。
# which php
と打って、
/usr/bin/php
等と表示されればOK。
または、
# whereis php
と打って、
php: /usr/bin/php /etc/php.d /etc/php.ini /usr/lib64/php /usr/share/php /usr/share/man/man1/php.1.gz
等と表示されればOK。
(参考)PHP: コマンドラインの使用法 - Manual
↑いろいろなオプションが紹介されてます。
# cd /var/www/html # php index.phpすると、index.phpがインタプリターで処理されて、結果が表示されます。
この方法でPHPスクリプトをデバッグすれば、Apache等のWebサーバーを経由しないでも、結果を確認できます。
コマンド・ライン PHP? もちろん可能です! - IBM developerWorks
PHPの便利なコマンドラインオプションを再発見 - PHPプロ!TIPS+
コマンドラインでPHPを使うときの11のTips | Suinasia