PHP CGIでの実行
Rev.2を表示中。最新版はこちら。
概要
PHPスクリプトをApacheモジュールからではなくCGIとして実行する場合のメモ。
環境
Linux(Fedora Core 4)PHPは5.0.4がインストール済み(CLI SAPI)
CLI版(CLI SAPI)バイナリを使う場合
最初からインストールされているCLI SAPI版PHPを使ってphpスクリプトをCGI実行する例。
apache httpd.conf例
# スクリプトを置くディレクトリについて # .phpファイルをCGIとして実行するように設定 <Directory /home/tomita/www> AddHandler cgi-script .php Options +ExecCGI </Directory>
スクリプト
#!/usr/bin/php <?php print "Content-Type: text/html\n\n"; print "foo"; ?>
CLI版を使用した場合は、PerlなどによるCGIスクリプトと同様に#!によるコマンドの指定や、HTTPヘッダ(Content-Type)の出力処理が必要になる。
CGI版(CGI SAPI)バイナリを使う場合
CGI版のPHPを使うとスクリプト内で#!やHTTPヘッダの出力をせずに、モジュール動作時と同じような処理でCGI実行できる。CLI/CGI版の違いやコンパイルの仕方は「PHP CGIでの実行」参照。
以下の例ではCGI SAPIバイナリは/usr/local/bin/php.cgiにインストールしたものとして説明する。
apache httpd.conf例
# スクリプトを置くディレクトリについて # .phpファイルをCGIとして実行するように設定 <Directory /home/tomita/www> AddHandler cgi-script .php Options +ExecCGI </Directory>
CGI版PHPでのスクリプト
#!/usr/local/bin/php.cgi <?php # ヘッダは自動で出力されるので不要 # print "Content-Type: text/html\n\n"; print "foo"; ?>
apache httpd.conf例
<ScriptAlias /cgi-bin/ "/home/tomita/www/cgi-bin/"> <Directory /home/tomita/www> AddHandler php4-script .php # .phpファイルでは/cgi-bin/phpを実行 Action php4-script /cgi-bin/php.cgi # リンクをたどれるようにしておく Options +ExecCGI +FollowSymLinks </Directory>
CGI版PHPでのスクリプト
<?php print "foo"; ?>