IISで拡張子phpを無理やり動かす方法(ファイルを読みさえすればいい場合)


この記事は2012年11月に掲載されたものです。
状況が変わったり、リンク先が変わっている可能性があります。

これは、PHPを拡張子htmlのファイルで動かす方法ではない。反対に、拡張子phpのファイルをHTMLのように表示させる方法だ。

IISでPHPを動かすことは普通しないと思うが、どうしても動かしたいPHPのコンテンツがあったとする。スクリプトの部分はPerlやASPに書き換えるとして、例えばFlashの最後にPHPファイルへ遷移するようなアクションスクリプトが組み込まれている場合、拡張子phpのファイルを動かすことが必須になる。

PHPをインストールしないでこれを実現するには、拡張子phpの場合にHTMLと同じ挙動をするようにして、meta refreshで次のファイルに飛ばしてやればいい。

aaaaa.swf ⇒アクションスクリプトが組み込まれたFlash
 ↓
bbbbb.php ⇒遷移先のPHP
 ↓
ccccc.xxx ⇒PerlやASPなどIISで動くスクリプト

具体的にはIISのマッピングで、拡張子phpにHTMLと同じ実行可能ファイルを割り付けてやる。イレギュラーな設定なので、「既定のWebサイト」全体ではなく、ファイルを置くWebサイトだけにしたほうがいいだろう。

(IIS 6.0の手順)

  1. IISマネージャで任意のWebサイトを右クリックし、[プロパティ]を開く。
  2. [ホームディレクトリ]タブ⇒[構成]をクリック。
  3. [マッピング]タブで「.html」の[編集]をクリックし、「実行可能ファイル」をコピーして[キャンセル]。
  4. [追加]をクリックし、「拡張子」に「.php」、「実行可能ファイル」に3でコピーしたものをペーストして[OK]。

HTMLの実行可能ファイルは「C:\WINDOWS\system32\inetsrv\ssinc.dll」なので、これをPHPにも設定すればいい。

こうすると、再起動なしでbbbbb.phpはbbbbb.htmlと同じになる。あとは meta refreshで0秒後に、次のccccc.xxxへ飛ばしてやればいい。

<html>
<head>
<meta http-equiv="refresh" content="0;URL=ccccc.xxx">
</head>
</html>

マッピングが正しいかの確認としては、スクリプトが書かれた拡張子phpのファイルをブラウザで呼び出すとよい。拡張子htmlと同じ挙動になるわけだから、ソースがそのままテキスト表示されるはずだ。

イントラネットなどで、拡張子phpのファイルをどうしても扱う場合の苦肉の策である。