【Windows10Pro】IIS+PhpStormによるPHPアプリの開発準備

こんにちは。不可思議絵の具です。

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)バージョンを使用する必要があります)

Windows版ダウンロードページより

https://www.php.net/

→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をインストールする

https://xdebug.org/

→download
→Xdebug 2.4.1
→Windows binaries
PHP 7.0 VC14 (64 bit)

「TSが付いていない方(非スレッドセーフ版)」を落とす。

「TS」が付いている方はスレッドセーフ版と思われます。

php.iniファイルを調整する

  1. C:\phpを開く
  2. php.ini-developmentphp.iniにコピー
  3. 下記項目を修正
    fastcgi.impersonate=1
    cgi.fix_pathinfo=1
    cgi.force_redirect = 0
    extension_dir = "ext"
  4. 下記部分をコメントアウト
    (拡張機能の有効化。多分殆どのレンタルサーバーと互換性あると思う)
    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
  5. 下記項目をファイル末尾に追記
    (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のパスを通す

  1. File→Settings→PHP
    PHP language level 及び Interpreter を選ぶ
    …のだがInterpreter欄の「…」をクリックして
    File→Settings→PHP PHP language level 及び Interpreter を選び、Interpreter欄の「…」をクリック
  2. php.exeの場所を教える
    php.exeの場所を教える

Xdebugのポート番号を指定

  1. File→Settings→PHP→Debugを選ぶ
    File→Settings→PHP→Debugを選ぶ
  2. [Debug port]をphp.ini内のxdebug.remote_portと一致させる
  3. [Use debugger bookmarklets to initiate debugging from your favorite browser]をクリック
    ブラウザが立ち上がり「Xdebug & Zend Debugger bookmarklets generator for PhpStorm」画面に遷移する
  4. 「Xdebug」の「IDE key」に「PHPSTORMxdebug.idekeyで設定したもの)」と入力し、『GENERATE』ボタン押下

    「Xdebug」の「IDE key」に「PHPSTORM(xdebug.idekeyで設定したもの)」と入力し、『GENERATE』ボタン押下

  5. 「Bookmark these links for future use」が表示されるので、その中の
    「Start debugger」「Stop debugger」をブックマークバーにドラッグ(ブックマークレットを保存)

接続先サーバを追加し、ローカルとWebサーバの物理パスを一致させる

File→Settings→PHP→ServersにIISを追加

Name:適当
Host:localhost
Use path mappingsの下の一覧、左側に開いてるファイルのディレクトリが表示されているので、その右側にIISでの物理パスを指定する。
今回はローカルで作り、ローカルで動かすので右左が一致する。

デバッグプロファイルを追加する

  1. Run→Settingsを開く
  2. +マークをクリックし、「PHP Remote Debug」を追加する
  3. 名前:適当(自分は Xdebug としました)
    Servers:local IIS(File→Settings→PHP→Serversで追加したもの)
    Ide key:PHPSTORMphp.inixdebug.idekeyと一致させる)

デバッグ実行のやり方

  1. デバッグしたいページをPhpStorm、ブラウザの両方で開く
  2. PhpStormの画面右上、電話?みたいなマークをクリックする

    その後、下図のようになる
  3. ブラウザ側で「Start debugger」ブックマークレットをクリック
  4. ブラウザをリロード
  5. ブレークポイントで止まるようになる
    (ブレークポイントは行番号の辺りをクリックすると赤丸が付く)

タイムアウト時間延長

取り敢えず動かすという意味では上記の設定までで十分だが、じっくりプログラムを見ているうちにIISがタイムアウトエラーを起こしてしまうので時間延長する。

  1. IISマネージャー→サーバを選択→IIS→FastCGIの設定を開く
  2. php-cgi.exeをダブルクリック
  3. タイムアウト値を変更
項目 初期値 変更値
アクティビティタイムアウト 70秒 600秒(10分間)
要求タイムアウト 90秒 600秒(10分間)

今回作成したphp.iniを置いておきます

今回作成したphp.iniを置いておきます。

ダウンロード

関連項目

Web開発に関連する記事をまとめています。

あわせて読みたい
Web開発に関する記事まとめ Blog内から、Web開発に関連する記事をまとめています。 【レンタルサーバネタ】 エックスサーバー ムームードメインで取得したドメインを使う方法 当サイトはドメイン取...

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

あわせて読みたい
IIS+PhpStormでの開発トラブルと対応の記録 WebサーバにIIS、IDEにPhpStormを使ってPHPアプリを開発しています。 開発中に発生したトラブルとその対応内容をこのページに健忘録として記録しておきます。

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

あわせて読みたい
英語でも大丈夫!【PhpStorm】の購入とアクティベート方法 PhpStormをJetBrains公式サイトで購入・アクティベートする方法です。 英語が苦手な方でも手順が分かるように配慮しています。
お役に立てたらシェアお願いします(^O^)/
  • URLをコピーしました!
もくじ(押すと各章に飛ぶ)