IIS7 で PHP と Perl CGI

2016/03/26

[Home]

この記事は Windows 10, PHP 7.0, Perl 5.22 で確認しています。


PHP


php.ini 編集内容

次の項目を検索してコメントアウトを外して値を設定する。

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

ついでに Windows 環境での設定も行う。以下は一例である。

include_path = ".;c:\php7\includes"
extension_dir = "C:\PHP\ext"

拡張モジュールを利用するなら extension = を追加する。以下は一例である。

extension = php_mysqli.dll
extension = php_mbstring.dll
extension = php_pdo_mysql.dll
extension = php_pdo_oci.dll
extension = php_pdo_sqlite.dll
extension = php_gd2.dll
extension = php_exif.dll

IIS7 の設定

IIS をまだインストールしていない場合は、コントロールパネルの「プログラム / プログラムと機能」から「Windows 機能の有効化または無効化」を選び、「インターネットインフォメーションサービス」を展開する。「アプリケーション開発機能」の中の CGI がチェックされていることを確認する(チェックされてない場合はチェックする)。OK をクリックしてインストールを完了させる。

コントロールパネルのシステムとセキュリティから管理ツールを開く。「サービスとアプリケーション」の下の「インターネットインフォメーションサービス」を展開する。

ホームページのアイコン一覧を表示させて、IIS グループの中から「ハンドラマッピング」探してダブルクリックする。

ダイアログが開くので次のように入力する。ただし、php-cgi.exe の場所は各自の環境による。


PHP インストールフォルダのセキュリティ設定

IIS が PHP インストールフォルダをアクセスできるようにセキュリティを変更する。Explorer で PHP インストールフォルダを右クリックしてプロパティを開く。

セキュリティタブを選択して、編集ボタンをクリックして IIS_IUSERS ユーザグループを追加する。


動作確認

phpinfo.php をエディタで作成して wwwroot フォルダに保存する。内容は下のとおりである。

<?php phpinfo(); ?>

http://localhost/phpinfo.php をブラウザで開いて正しく表示できれば OK。このとき、拡張モジュールが動作していることも確認する。


 

Perl CGI

PHP の「IIS7 の設定」を参照して CGI 機能がチェックされていることを確認する。 コントロールパネルのシステムとセキュリティから管理ツールを開く。「サービスとアプリケーション」の下の「インターネットインフォメーションサービス」を展開する。

ホームページのアイコン一覧を表示させて、IIS グループの中から「ハンドラマッピング」探してダブルクリックする。

「モジュールマップの追加」メニューを実行しする。ダイアログが開くので下のように入力する。perl.exe のパスは各自の環境により変更する。

perl.exe を IIS がアクセスできるように Perl のインストールフォルダを Explorer で選択して右クリックする。右クリックしてコンテキストメニューを開いてプロパティを実行する。ダイアログのセキュリティタブを開き、IIS_IUSRS グループを追加する(詳しくは PHP のところを参照)。

CGI ファイルの置き場として、C:\inetpub\cgi-bin フォルダ (他の場所でもよい) を作成する。このフォルダを仮想フォルダとして IIS でマッピングする。

このフォルダのセキュリティで IIS がアクセスできるように IIS_IUSRS ユーザグループを追加する。

動作確認用に次のような CGI をエディタで作成して、cgi-bin フォルダに配置する。

print "Content-type: text/plain\n\n";
print "Hello, world.";


ブラウザで http://localhost/cgi-bin/hello.cgi を開く。"Hello, world." と表示されれば OK。