こんにちは。不可思議絵の具です。
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を公式サイトから買ったときの記録