CGI-Common Gateway Interface
Apacheは、phpインタープリターをcgiプログラムとして呼び出すように構成できます。これは、php-cgiバイナリが外部で実行され、phpスクリプトがそれによって実行され、出力がapacheに返されることを意味します。これは、apacheでphpを実行する1つの方法です。他の方法には、共有モジュール、fastcgiなどがあります。apacheでphpを実行するためのさまざまなオプションについて詳しくは、phpサーバーAPIに関する以前の投稿をご覧ください。
cgiモードでは、phpは個別に実行されるため、workerのようにスレッド化されたapachempmを使用できます。この投稿では、cgiを介してapacheとphpを一緒にセットアップします。
パッケージのインストール
インストールに必要なパッケージには、apache、mpm worker、php5、phpcgiが含まれます。 apt-getコマンドを使用して一度にすべてをインストールします
# sudo apt-get install apache2 apache2-mpm-worker php5 php5-cgi
apacheでmodアクションを有効にします。
$ sudo a2enmod actions
すでにapacheとphpがmodphpとともにインストールされている場合は、最初にmodphpを無効にする必要があります
$ sudo a2dismod php5
Apacheの構成
次に、phpをcgiとして実行するようにapacheを構成します。構成は関連するvhostブロックで行われます。
Apache仮想ホスト構成ファイルは次の場所にあります
/etc/apache2/sites-enabled/
デフォルトのvhostファイルは000-default.confで、ほとんどのシステムに存在します。
いくつかの必要なディレクティブを構成ファイルの右側のディレクトリブロックに追加して、apacheにphp-cgiバイナリを使用して実行するように指示する必要があります。 「.php」で終わるファイル。
ディレクティブは、AddHandler、Action、およびScriptAliasです。最小限の構成は次のようになります
<Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all AddHandler cgi-handler .php Action cgi-handler /local-bin/php-cgi </Directory> ScriptAlias /local-bin /usr/bin
AddHandler行は、.phpファイルのcgi-handlerと呼ばれるハンドラーを宣言します。これは何にでも名前を付けることができます。
アクション行は、phpcgiバイナリである/local-bin/php-cgiプログラムを使用してcgi-handlerを実行するようにapacheに指示します。現在、このパスは実際のパスではありません。
ScriptAlias行は、/local-binを/usr/binにマップします。したがって、パス / local-bin / php-cgi / usr / bin / php-cgiになります これは、ubuntu/debian上のphp-cgiバイナリの実際のパスです。
ここでapacheを再起動します
# service apache2 restart
phpinfo()を含むphpファイルをWebルートに配置し、ブラウザーから開きます。サーバーAPIは「CGI/FastCGI」として報告されます。