IISでphpを動かせるようになるまでのメモ

 Windows ServerのIISphpを動かすのに毎回つまづいて調べているのでここにメモしておきます。
 Web Platform Installer、WebPIを使うのが早道なんですが昨年末で終了とのこと。自分は以前から手動で入れる派です。1か月に1回ぐらいあるphpのバージョンアップもphpのフォルダを入れ替えるだけで、php導入時にIISで動かせるようにするのも下で説明するコマンド2行だけですし。
 まずはIISの導入は役割の機能の追加ウィザードでIISを選択して、IISの役割サービスのところでアプリケーション開発の中にあるCGIのみチェックを入れてIISをインストール。
 phpはCドライブの直下にphpフォルダを作ってそこにphpNTS版ZIPファイルの内容をコピー。php.iniは基本、php.ini-productionをコピーすればいいですが、ログの出力先やtimezoneの設定をしておきます。このファイルは代々使っているのがあるのでその内容を使いまわしています。php.iniファイルの推奨設定は以下のページも参照。

learn.microsoft.com

 環境変数でPathにC:\phpを追加。これでPowerShellコマンドプロンプトのコンソールで

PS C:\Users\user> php -v

と実行すればバージョン情報が。となるはずですが何も表示されません。パスが通ってなかったりするとエラーが出るのですが、なにもメッセージが出ないのはおかしい。php.exeは確かに実行されてただプロンプトに戻るのみです。という失敗を毎回やっていて、phpWindows環境での実行にはVisual C++のランタイムの導入が必要なのでした。

learn.microsoft.com

 これで問題なくphpが実行できるようになりました。
 最後にIISphpCGIとしての登録ですが、こちらのページを参考に管理者権限のコマンドプロンプトから

learn.microsoft.com

C:\> C:\Windows\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI /+[fullPath='c:\php\php-cgi.exe']
C:\> C:\Windows\system32\inetsrv\appcmd set config /section:system.webServer/handlers /+[name='PHP_via_FastCGI',path='*.php',verb='*',modules='FastCgiModule',scriptProcessor='c:\php\php-cgi.exe',resourceType='Unspecified']

と実行。IISを再起動して、phpinfo()のページが表示されることを確認して完了です。
 あとは既定のドキュメントとしてindex.phpの追加もありますが、これは従来から使ってきたweb.configファイルをWebページのファイルたちと一緒に戻すので特に作業はありません。