こんにちは。不可思議絵の具です。
Windows10 Proに標準添付のIIS 10を使い、PHP 7.0を開発できるようにするまでの手順です。
また、PhpStormとXdebugを使用してデバッガをステップ実行できるようにしました。
参考程度ですがphp.iniも配布しています。
自分用の記録なので写真は少なめアッサリ風味です。
環境:
- Windows10 Pro 64bit版 (Anniversary Update後)
- IIS 10
- PHP 7.0.10
- Xdebug 2.4.1
- PhpStorm 2016.2
IISのCGIサポートを有効化する
コントロールパネル
→プログラムと機能
→Windowsの機能の有効化または無効化
→IIS
→WWWサービス
→アプリケーション開発機能
→CGI
をON

PHPのWindows版バイナリをインストールする
IISで使用する場合は「非スレッドセーフ(Non Thread Safe)版」を使用する
Which version do I choose?
(どのバージョンを選択すれば良いでしょうか?)IIS
If you are using PHP as FastCGI with IIS you should use the Non-Thread Safe (NTS) versions of PHP.
(IISでFastCGIとしてPHPを使用している場合は、PHPの非スレッドセーフ(NTS)バージョンを使用する必要があります)
→Downloads
→Current Stable PHP 7.0.10
→Windows downloads
→VC14 x64 Non Thread Safe (又は x86 Non Thread Safe)
→Zip
ちなみにこの時落としたのは php-7.0.10-nts-Win32-VC14-x64.zip
自分は C:\php にインストールしました。以降、ここにある前提とします。
Xdebugをインストールする
→download
→Xdebug 2.4.1
→Windows binaries
→PHP 7.0 VC14 (64 bit)
「TSが付いていない方(非スレッドセーフ版)」を落とす。
「TS」が付いている方はスレッドセーフ版と思われます。
php.iniファイルを調整する
C:\phpを開くphp.ini-developmentをphp.iniにコピー- 下記項目を修正
fastcgi.impersonate=1 cgi.fix_pathinfo=1 cgi.force_redirect = 0 extension_dir = "ext"
- 下記部分をコメントアウト
(拡張機能の有効化。多分殆どのレンタルサーバーと互換性あると思う)extension=php_bz2.dll extension=php_curl.dll extension=php_fileinfo.dll extension=php_gd2.dll extension=php_gettext.dll extension=php_mbstring.dll extension=php_exif.dll ; Must be after mbstring as it depends on it extension=php_mysqli.dll extension=php_pdo_mysql.dll extension=php_sqlite3.dll
- 下記項目をファイル末尾に追記
(Xdebug用の設定)[XDebug] zend_extension = "C:\php\ext\php_xdebug-2.4.1-7.0-vc14-nts-x86_64.dll" xdebug.remote_enable = 1 xdebug.remote_port = 9000 xdebug.profiler_enable = 1 xdebug.profiler_output_dir = "C:\php\temp" xdebug.max_nesting_level = 1000 xdebug.idekey = "PHPSTORM"
IISのハンドラマッピングに*.phpを追加する
IISマネージャー→サーバを選択→IIS→ハンドラーマッピング

モジュールマップの追加をクリック

下記情報を入力
| 要求パス | *.php |
|---|---|
| モジュール | FastCgiModule |
| 実行可能ファイル | c:\php\php-cgi.exe |
| 名前 | PHP via FastCGI |

PhpStormを設定する
PHPのパスを通す
- File→Settings→PHP
PHP language level 及び Interpreter を選ぶ
…のだがInterpreter欄の「…」をクリックして
- php.exeの場所を教える

Xdebugのポート番号を指定
- File→Settings→PHP→Debugを選ぶ

- [Debug port]を
php.ini内のxdebug.remote_portと一致させる - [Use debugger bookmarklets to initiate debugging from your favorite browser]をクリック
ブラウザが立ち上がり「Xdebug & Zend Debugger bookmarklets generator for PhpStorm」画面に遷移する - 「Xdebug」の「IDE key」に「
PHPSTORM(xdebug.idekeyで設定したもの)」と入力し、『GENERATE』ボタン押下
- 「Bookmark these links for future use」が表示されるので、その中の
「Start debugger」「Stop debugger」をブックマークバーにドラッグ(ブックマークレットを保存)
接続先サーバを追加し、ローカルとWebサーバの物理パスを一致させる
File→Settings→PHP→ServersにIISを追加
Name:適当
Host:localhost
Use path mappingsの下の一覧、左側に開いてるファイルのディレクトリが表示されているので、その右側にIISでの物理パスを指定する。
今回はローカルで作り、ローカルで動かすので右左が一致する。
デバッグプロファイルを追加する
- Run→Settingsを開く
- +マークをクリックし、「PHP Remote Debug」を追加する
- 名前:適当(自分は
Xdebugとしました)
Servers:local IIS(File→Settings→PHP→Serversで追加したもの)
Ide key:PHPSTORM(php.iniのxdebug.idekeyと一致させる)
デバッグ実行のやり方
- デバッグしたいページをPhpStorm、ブラウザの両方で開く
- PhpStormの画面右上、電話?みたいなマークをクリックする

その後、下図のようになる
- ブラウザ側で「Start debugger」ブックマークレットをクリック
- ブラウザをリロード
- ブレークポイントで止まるようになる
(ブレークポイントは行番号の辺りをクリックすると赤丸が付く)
タイムアウト時間延長
取り敢えず動かすという意味では上記の設定までで十分だが、じっくりプログラムを見ているうちにIISがタイムアウトエラーを起こしてしまうので時間延長する。
- IISマネージャー→サーバを選択→IIS→FastCGIの設定を開く

- php-cgi.exeをダブルクリック

- タイムアウト値を変更
| 項目 | 初期値 | 変更値 |
|---|---|---|
| アクティビティタイムアウト | 70秒 | 600秒(10分間) |
| 要求タイムアウト | 90秒 | 600秒(10分間) |

今回作成したphp.iniを置いておきます
今回作成したphp.iniを置いておきます。
関連項目
Web開発に関連する記事をまとめています。

他、IISでのPHP開発で分かったことは下記ページに追記しています。

PhpStormを公式サイトから買ったときの記録









