IIS7で拡張子.htmlのままPHPを実行する方法

自分はローカルサーバー環境ではXAMPPではなく、IIS7を利用しています。IIS7を利用している理由は二つ。一つ目は、業務でクラシックASPを使っていることもあってASPが標準で利用できること(ちょっと設定変更が必要ですが)、二つ目はWeb PI(Microsoft Web Platform Installer)を利用すればかなり簡単にウェブプラットフォーム等がインストール利用できること。以上、二点からIIS7を利用しています。

まあそんなことはともかく、わけあって拡張子.htmlのままPHPを動かしてみたいと思ったのでいろいろ調べてみました。なお、IISで動くPHPのインストールや設定方法については、下記のサイトを参考にしてください。
[MEMO] IIS 環境に PHP をインストールする – WebMatrix の歩き方 by 武田正樹 – Site Home – MSDN Blogs
Windows 8/7/Vista に PHP をインストール

そんな中、IIS7で拡張子が.htmlのままPHPを実行したいと思ったのですが、.htaccessでの方法は多く見つかるものの、IISでの設定は見つからず。
.htaccessで拡張子.htmlのままPHP実行可能にする:ねこすけのPHP
.htaccessで、拡張子.htmlのままPHPを実行する方法 | 海外SEO情報ブログ

というわけで、いろいろ試行錯誤して分かったのでここに書いておきます。今回はIISで『amyu』という名前のサイトを作成し、そのサイトにアクセスした場合には拡張子が.htmlのファイルでもPHPとして実行するようにしたいと思います。IISでの複数サイトの追加は下記のサイトを参考にしてください。
IIS で Web サイトの追加

『amyu』の物理パスは『C:\inetpub\wwwroot\amyu』、ホスト名は『amyu.localhost』としました。
Webサイトの追加
試しに下記のようなソースコードを書いた拡張子.htmlを作成し、開いてみます。

<?php
phpinfo();
?>

もし、PHPが実行される環境であれば、このファイルのページを開いた時にはPHPの設定情報が表示されるはずです。アクセスしてみると下記のようになりました(シークレットウィンドウで開いてますが特に意味はありません。通常のウィンドウだと拡張機能のボタンが多すぎてウィンドウサイズをあまり小さくすることができず、見栄えが悪いんです・・・)。
htmltophp2
何も表示されていません。試しにソースコードを表示してみると、下記のように元々のソースコードがそのまま表示されている状態になっています。
htmltophp3

ではいよいよ、拡張子.htmlでPHPを実行する方法の説明です。IISの画面に戻って、『ハンドラーマッピング』のアイコンをダブルクリックします。
htmltophp4
『ハンドラーマッピング』という画面になるので、そこからパスが『*.php』となっている項目を探してダブルクリックします。
htmltophp7
すると下記のような画面が表示されるはずです。この項目を覚えておいてください(もしかしたら環境によっては下記と同じではないかもしれません)。
htmltophp6
上記画面を閉じてハンドラーマッピング画面に戻り、どこか適当な場所で右クリックし、『モジュールマップの追加』をクリックします(あるか分かりませんが、もし先ほどの画面が『モジュールマップの編集』という画面ではなく、『スクリプトマップの編集』という画面だったならば、『スクリプトマップの追加』をクリックします。なお、ASPを.htmlで実行したい場合は『スクリプトマップの追加』をすることになります)。
htmltophp7
すると、先ほどの*.phpをダブルクリックした時と似たような画面が表示されるので、要求パスに『*.html』、モジュールと実行ファイルを先ほどの*.phpで開いた画面と同じ項目を入力します。なお、実行可能ファイルのパスはダブルクォーテーションで囲まないといけないようです。名前は適当で分かりやすい名前にしましょう。ここでは『HTMLtoPHP』としました。
htmltophp8
OKボタンをクリックすると、下記のようなメッセージボックスが表示されると思うのでOKをクリック。
htmltophp9
すると、ハンドラーマッピングに『HTMLtoPHP』が追加されました。
htmltophp10

以上で、拡張子が.htmlでもPHPとして動くはずです。以下が動作結果。
htmltophp11
ちゃんと動いたようです。

ところで、以上の動作を行った所、ディレクトリに下記のようなweb.configファイルが作成されました。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="HTMLtoPHP" path="*.html" verb="*" modules="FastCgiModule" scriptProcessor="C:\Program Files (x86)\PHP\php-cgi.exe" resourceType="Unspecified" />
        </handlers>
    </system.webServer>
</configuration>

どうやらこれが、web.configでの書き方になるようです。
試しに、Default Web Site(http://localhost/)のサブディレクトリにこのweb.configとPHPコードを書いたHTMLファイルをいれてブラウザで見てみるとPHPが実行されました。
htmltophp12
もちろん、web.configを削除すると、PHPが実行されなくなります。

コメント

タイトルとURLをコピーしました