IIS 7 + FastCGI で PHP 5.3 を実行する

こんにちわ。omae です。

今回は IIS 7 で PHP 5.3 を実行する環境が必要になったのでその手順を残しておきたいと思います。

作業しようとしてから気づいたのですが PHP 5.3 から isapi モジュールが廃止されていました。PHP 5.2 以前までは isapi モジュールで環境を作成していたのですが、廃止されてしまったものはしょうがありません。IIS 7 からは FastCGI が正式に対応しているので、こちらで設定することにします。

手順

1. PHP 5.3.1 をインストール

PHP For Windows: Binaries and sources Releases より今回は VC6 x86 Thread Safe (ZIP) を使うことにしました。この zip ファイルを C:\php に展開します。

ここでコマンドプロンプトを起動して C:\php\php-cgi.exe -h が実行できることを確認しておきます。実行すると以下のようなエラーが上がる場合は php.ini から extension=php_mssql.dll をコメントアウトします。SQL Server に接続する予定があるなら ntwdblib.dll を準備します。

無事に実行出来た場合:

C:\>C:\php\php-cgi.exe -h
Usage: php [-q] [-h] [-s] [-v] [-i] [-f <file>]
       php <file> [args...]
  -a               Run interactively
  -b <address:port>|<port> Bind Path for external FASTCGI Server mode
  -C               Do not chdir to the script's directory
  -c <path>|<file> Look for php.ini file in this directory
  -n               No php.ini file will be used
  -d foo[=bar]     Define INI entry foo with value 'bar'
  -e               Generate extended information for debugger/profiler
  -f <file>        Parse <file>.  Implies `-q'
  -h               This help
  -i               PHP information
  -l               Syntax check only (lint)
  -m               Show compiled in modules
  -q               Quiet-mode.  Suppress HTTP Header output.
  -s               Display colour syntax highlighted source.
  -v               Version number
  -w               Display source with stripped comments and whitespace.
  -z <file>        Load Zend extension <file>.
  -T <count>       Measure execution time of script repeated <count> times.

2. IIS で FastCGI が使えるように設定します

サーバーマネージャを起動して「Web サーバー (IIS)」の機能に「CGI」がインストール済みになっていることを確認します。 インストールされていない場合は「役割サービスの追加」からインストールします。

3. php.ini に fastcgi のための設定を行う

php.ini を開いて次の設定に変更します。

fastcgi.impersonate = 1
fastcgi.logging = 0
cgi.fix_pathinfo = 1
cgi.force_redirect = 0

4. IIS マネージャから PHP のハンドラを設定する

a. IIS マネージャを起動し、ハンドラマッピングを開きます。

b. 「モジュールハンドラの追加」を選択し、以下の要領で *.php に対して fastcgi による php の実行を設定します。

5. phpinfo.php にアクセスして確認

C:\inetpub\wwwroot\phpinfo.php などに <?php phpinfo(); と書いたファイルを用意して、このファイルにブラウザからアクセスしてみます。

無事に phpinfo() が参照できれば、設定は完了です。

ついでにタスクマネージャを起動して FastCGI なので php-cgi.exe プロセスがいるか確認してみましょう。

ちゃんといますね。

参考

ソフトウェアエンジニアのためのバグトラッキングシステム : Ciklone

ソフトウェアエンジニアのためのバグトラッキングシステム

ソフトウェアエンジニアのためのバグトラッキングシステム

Comments are closed.