読者です 読者をやめる 読者になる 読者になる

CGI、PHPを利用する設定

CentOS apache

CGI (Common Gateway Interface) とは、Webサーバから外部のプログラムを呼び出す仕組み。CGIを使うと何が違うのか

びふぉあ

リクエストに応じてあらかじめ用意されている HTMLファイルを返す
表示される内容は常に一定

あふたー

PerlC言語などで記述された外部プログラムを実行し、その実行によって生成された HTML などをレスポンスメッセージとして返す。
動的な Webページを作ることが可能に!すごいぞ CGI!

CGI を利用する

CGI を利用するためには mod_cgi モジュールがロードされている必要がある。また httpd.conf ファイルで次のような設定が必要になる。設定方法は2種類。

  • ScriptAlias ディレクティブで指定する
  • 特定のディレクトリ以下を Options で指定する
ScriptAlias で指定

デフォルトで設定されている方法。特定のディレクトリ以下へのリクエストがあった場合、CGI とみなしてそれが実行される。
デフォルトの ScriptAlias ディレクティブ

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
Options で指定する

CGI を実行したいディレクトリに対し、下記のように指定する

<Directory "/home/www/cgi-bin">
    Options +ExecCGI
</Directory>

また、どのファイルが CGIプログラムであるかを特定するため下記の記述も必要になる

AddHandler cgi-script .cgi

CGI プログラムは apache ユーザーがアクセスし実行できる権限が設定されている必要あり
※ ユーザーのホームディレクトリ内を公開するときは、ホームディレクトリのパーミッションを711などに変更する必要あり

PHP を利用する

PHP はデフォルトで利用できる設定になっている。動作しない場合、/etc/httpd/conf.d/php.conf をチェックする

<IfModule prefork.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>

AddHandler php5-script .php
AddType text/html .php

DirectoryIndex index.php
php プログラムが動作するかの確認

ファイルを新規作成してアクセスする

<html><body>
<?php
   phpinfo();
?>
</body></html>