[[PHP]]

CLIを利用したPHPのデバッグ方法について調査&まとめ。

#contents

* PHP CLIとは? [#g378ead3]
PHPスクリプトの実行は、Webサーバー経由での実行(CGI版)だけでなく、Webサーバーを経由せずコマンドライン上での実行(CLI版)が可能です。

(厳密に言うと、ApacheでPHPを実行する場合はCGI版ではなく、Apacheのモジュール「mod_php」経由=Apacheの一部としてPHPが処理されています。)

[[CLIとは - PHP用語 Weblio辞書>http://www.weblio.jp/content/CLI]]
>CLI シー・エル・アイ
【英】 Command Line Interface
&color(red){PHP言語をコマンドライン上から実行するためのSAPI(Server Application Programming Interface)。};PHPバージョン4.3からデフォルトでインストールされるようになった。CLI版のPHPは、カレントディレクトリの扱い、スクリプトの動作時間制限、エラーの表示方法などがCGI版と異なっている。

[[CLI - Wikipedia>http://ja.wikipedia.org/wiki/CLI]]
>コマンドラインインタフェース (Command line interface) 。キャラクターユーザインターフェース(CUI)と同義。

[[キャラクタユーザインタフェース - Wikipedia>http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9]]
>キャラクタユーザインタフェース (character user interface、略称 CUI、和製英語)、コマンドラインインタフェース (command line interface、略称 CLI)は、コンピュータにおいて、キーボードを用いて入力を行い文字によって出力を行う様式のユーザインタフェースである。グラフィカルユーザインタフェース (GUI) の対義語として使われる。
CUI (character user interface) という呼称は基本的に日本だけで通用するものであり、英語圏などではCLI (command line interface) という呼称が使われる。
日本においても会話などではコマンドラインやコンソール(端末)と呼ばれることが多い。

[[PHP CLI/CGI SAPI - とみぞーノート>http://wiki.bit-hive.com/tomizoo/pg/PHP%20CLI%2FCGI%20SAPI]]
>phpコマンドにはCLI版(CLI SAPI)とCGI版(CGI SAPI)がある。これらはそれぞれシェル(コマンドライン)アプリケーション向け、CGIとしての実行向けになっており動作が異なる。
CLI/CGI版の大きな違いは、コマンド実行時にHTTPヘッダを出力するか否か。
CLI版はコマンドラインからの実行向けにコマンド実行時にHTTPヘッダを出力しない。

[[CGIとPHPは違う!と言って聞かない人がいます - CGI - 教えて!goo>http://oshiete.goo.ne.jp/qa/4808895.html]]
>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 CLIの確認 [#uce54587]

- PHPがCLIを使えるようにビルドされているか、確認しましょう。
 # 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
という具合に、「&color(red){(cli)};」と表示されたら、CLI版としてビルドされたPHPインタプリターであることが分かります。
普通、PHPをパッケージでインストールしたら、CLI版になっているそうです。
手動でビルドする場合は、明示的にCLI版を指定してやればOKとのこと。

** パスの確認 [#k5365298]
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 CLIの使い方 [#y00190e9]
(参考)[[PHP: コマンドラインの使用法 - Manual>http://php.net/manual/ja/features.commandline.php]]
↑いろいろなオプションが紹介されてます。

- 使い方の一例
「/var/www/html」というディレクトリの中にある「index.php」をコマンドラインで実行する場合。
 # cd /var/www/html
 # php index.php
すると、index.phpがインタプリターで処理されて、結果が表示されます。

この方法でPHPスクリプトをデバッグすれば、Apache等のWebサーバーを経由しないでも、結果を確認できます。

* 参考リンク [#qfd1740e]
[[PHP CLI - Google検索>https://www.google.co.jp/#q=PHP+CLI]]

[[コマンド・ライン PHP? もちろん可能です! - IBM developerWorks>http://www.ibm.com/developerworks/jp/opensource/library/os-php-command/]]
[[PHPの便利なコマンドラインオプションを再発見 - PHPプロ!TIPS+>http://www.phppro.jp/phptips/archives/vol29/2]]
[[コマンドラインでPHPを使うときの11のTips | Suinasia>http://suin.asia/2011/04/03/command_line_php_11_tips]]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS