Linuxなどのメモ書き

PHP CLI/CGI SAPI


Rev.4を表示中。最新版はこちら

概要

phpコマンドにはCLI版(CLI SAPI)とCGI版(CGI SAPI)がある。これらはconfigure時に指定したオプションによってどちらかがインストールされる(*1)。

コマンドがどちらのものかは-vオプションで確認できる。
# php -v
PHP 5.1.6 (cli) (built: May  9 2007 11:47:50) 
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies

 (*1) オプションによってはmake時に両方コンパイル(sapi/cli/php,sapi/cgi/php)される場合もあるが、make installでインストールされるのは片方のみ。

動作の違い

CLI/CGI版の大きな違いは、コマンド実行時にHTTPヘッダを出力するか否か。

CLI版はシェルからの実行向けにコマンド実行時にHTTPヘッダを出力しない。

test.php
<?php
print "foo\n";
?>

CLI SAPIでのtest.php実行結果

# php test.php
foo


CGI版はコマンド実行時にHTTPヘッダが自動で出力される。ヘッダが自動で出力されるのでCGI実行時にスクリプト内でprint "Content-Type: text/html\n\n"; のように手動でヘッダを出力する必要がない。

CGI SAPIでのtest.php実行結果

# php test.php
X-Powered-By: PHP/4.4.7
Content-type: text/html

foo

configureの仕方

CLI版を作成したい場合は、configure時に--disable-cgiもしくは--with-apxs2=/usr/sbin/apxsを指定すればよい。

CLI版を作成するconfigure

# ./configure --disable-cgi

# ./configure --with-apxs2=/usr/sbin/apxs <== apache用moduleも作成

上記以外のケースだとCGI版を作成するmakefileが生成される。

CGI版を作成するconfigure
# ./configure

# ./configure --enable-cgi

# ./configure --enable-cgi --with-apxs2=/usr/sbin/apxs
--with-apxs2が指定されていると--enable-cgiを指定しても
CLI版が作成されるので注意

関連ページ



最終更新 2007/07/12 01:43:03 - kztomita
(2007/07/12 00:53:00 作成)


リンク

その他のWiki
Linuxメモ
Xnuメモ

会社
(有)ビットハイブ
受託開発やってます。

よくやる仕事

・Webシステム開発(LAMP環境)
・Linuxサーバー設定関連
サーバー移転作業代行

開発事例にデジタルカタログ/マンガビューワーを追加しました。

draggable.jsのスマホ対応版デモページを追加しました。説明はこちら

検索

Adsense
最近のコメント