IIS上でPHPを動作させる方法は、既にネット上にいくらでも出回っているんだけど、若干情報が古かったり、断片化していたりするのでここにまとめる。
事前準備
- Windows Updateで更新プログラムのチェックを行い、再起動を行います。
- WindowsのBit数を確認します。
- Windowsアイコンを右クリックし、メニューの中から[システム]を選択
- [システムの種類]項目内「64 ビット」または「32 ビット」であるかを確認
- *特に導入したばかりのPCでは数回更新+再起動を行う必要があり、おろそかになりやすい
IISのインストール
PHPをCGIとして動作させるので、CGIの機能も有効にします。
- [Windowsメニュー] → [Windows システムツール] → [コントロールパネル]押下
- [コントロールパネル]が開く
- [コントロールパネル] → [プログラム]押下 → (プログラムと機能欄内の)[Windows の機能の有効化または無効化] 押下
- [Windows の機能]が開く
- [Windows の機能] → (リストボックス内をスクロールして)[インターネット インフォメーション サービス]のチェックボックス押下
- [インターネット インフォメーション サービス]のチェックボックス左の「+」ボタン押下
- [World Wide Web サービス]のチェックボックス左の「+」ボタン押下
- [アプリケーション開発機]チェックボックス左の「+」ボタン押下
- [CGI]チェックボックス押下
- [OK]ボタン押下
- インストールが開始されます
- 終わったら[閉じる]ボタン押下
- ウェブブラウザを立ち上げて http://localhost/ にアクセスし、IISの画面が表示されることを確認
- エクスプローラーから C:\inetpub\wwwroot\ を開き、ファイルができていることを確認。iisstart.pngを開き、上記ブラウザでアクセスしたファイルであることを確認
- メモ帳でabcと書いたファイルを作り、test.txtとして、 C:\inetpub\wwwroot\ 内に保存します。ウェブブラウザで
http://localhost/test.txt にアクセスすると、abcが表示されます。 - [Windowsメニュー] → [Windows 管理ツール] → [インターネット インフォメーションサービス(IIS) マネージャー]押下
- [インターネット インフォメーションサービス(IIS) マネージャー]が開く
- 右カラムの[サーバーの管理]内、[停止][開始]の押下により、ウェブブラウザでの閲覧できる/できないが切り替わることを確認
- *リストボックス内の「おまちください…」が1分以上待っても更新されない場合は、正常動作では無い可能性があります。Windows Update+再起動で解決する場合があります。
IISのサーバー機能確認
- *以降、[インターネット インフォメーションサービス(IIS) マネージャー]のウィンドウを閉じてもサーバーは動いています。OSを再起動すると自動的に起動します。
PHPのインストール
IISの特性に合わせて設定値を変えます。日本語処理などの機能拡張も有効にします。
- PHP For Windows: Binaries and sources Releases(http://windows.php.net/download/)にアクセスする
- 事前準備2.Bで確認したビット数が64であれば「VC14 x64 Non Thread Safe」を、32であれば「VC14 x86 Non Thread Safe」欄の中から[zip]のリンクを押下しダウンロード
- ダウンロードしたファイル(ファイル名例:php-7.1.10-nts-Win32-VC14-x64.zip)を展開
- 展開したPHPフォルダを C:\inetpub\ 下に移動
- PHPフォルダ(例:C:\inetpub\php-7.1.10-nts-Win32-VC14-x64\)内の[php.ini-production]をデスクトップ上にコピー&ペーストする。
- [php.ini-production]ファイルを[php.ini]にリネームする
- [php.ini]をメモ帳で開き、次のそれぞれの行を書き換えて設定を有効にする
- PHPフォルダ(例:C:\inetpub\php-7.1.10-nts-Win32-VC14-x64\)内にphp.iniを移動する。
- C:\inetpub\php-7.1.10-nts-Win32-VC14-x64\php-cgi.exeをマウスのダブルクリックで実行する。
- エラーが出ない場合は開いたウィンドウを閉じる。
- 「VCRUNTIME140.dllが見つからないため~」とエラーが表示された場合はVCRUNTIME140.dllをインストール
- ウェブブラウザでDownload Visual Studio 2015 の Visual C++ 再頒布可能パッケージ from Official Microsoft Download Center(https://www.microsoft.com/ja-jp/download/details.aspx?id=48145)を開く
- 言語を日本語であることを確認し、[ダウンロード]ボタン押下
- [ダウンロードするプログラムを選んでください]と出るので、事前準備2.Bで確認したビット数に対応したファイルをダウンロード。64なら、[vc_redist.x64.exe]、32なら、[vc_redist.x86.exe]左のチェックボックスを押下し、[次へ]ボタン押下
- [名前を付けて保存]ウィンドウ表示
- [保存]ボタン押下
- [Microsoft Visual C++ 2015 Redistributable (x64) – 14.0.23026]ウィンドウ表示
- [ライセンス条項および使用条件に同意する]のチェックボックス押下
- [インストール]ボタン押下
- [ユーザーアカウント制御]ウィンドウ表示
- [はい]ボタン押下
- セットアップが進行し、完了したら[閉じる]ボタン押下
- C:\inetpub\php-7.1.10-nts-Win32-VC14-x64\php-cgi.exeをマウスのダブルクリックで実行し、エラーが出ないことを確認
- ウィンドウを閉じて終了
設定前
1 2 3 4 5 6 7 8 9 10 11 12 |
; extension_dir = "ext" ; cgi.force_redirect = 1 ; cgi.fix_pathinfo = 1 ; fastcgi.impersonate = 1 ; fastcgi.logging = 0 ; extension=php_mbstring.dll ; mbstring.language = Japanese ; mbstring.internal_encoding = ; mbstring.http_input = ; mbstring.http_output = ; mbstring.encoding_translation = Off ; mbstring.detect_order = auto |
設定後
1 2 3 4 5 6 7 8 9 10 11 12 |
extension_dir = "ext" cgi.force_redirect = 0 cgi.fix_pathinfo = 1 fastcgi.impersonate = 1 fastcgi.logging = 0 extension=php_mbstring.dll mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = auto mbstring.http_output = UTF-8 mbstring.encoding_translation = On mbstring.detect_order = auto |
- *行頭に「; 」が付いているとその行は無効を表します。ここでは、行を有効にし、必要な設定値への書き換えを行っています。
- *ここでは日本語の処理を含めた良く使う動作の設定例を示しています。
- エラー例:タイトル「php-cgi.exe – システムエラー」本文「VCRUNTIME140.dllが見つからないため、コードの実行を続行できません。プログラムを再インストールすると、この問題が解決する可能性があります。」
VCRUNTIME140.dllのインストール
- ※【詳細未確認】上記VCRUNTIME140.dllはphp7.3.xまでです。php7.4.xではvcruntimeの14.16以降が必要のようです。最新のサポートされる Visual C++ のダウンロードまたはダウンロードから、Visual Studio 2019 の Microsoft Visual C++ 再頒布可能パッケージ(VC_redist.x64.exe)をダウンロードして同様にインストールしてください。
IISがPHPを実行するためのアクセス権限の設定
- C:\inetpub\php-7.1.10-nts-Win32-VC14-x64\のフォルダをマウスの右クリックして[プロパティ]を押下
- [php-7.1.10-nts-Win32-VC14-x64のプロパティ]ウィンドウの表示
- [セキュリティ]タブの[編集]ボタン押下
- [php-7.1.10-nts-Win32-VC14-x64のアクセス許可]ウィンドウの表示
- [追加]ボタン押下
- [ユーザーまたはグループの選択]ウィンドウの表示
- [選択するオブジェクト名を入力してください]欄に[iis_iusrs]と入力して[名前の確認]を押下
- 場所の指定で示されている名前+[\IIS_IUSRS]と表示されれば、正しく認識されたことになります。[OK]ボタン押下
- [OK]ボタン押下
- [OK]ボタン押下
- *[名前が見つかりません]ウィンドウが出たら[iis_iusrs]のスペルミスの可能性があります確認してください
- *アクセス許可は変更しません
IISへのPHPランタイムの登録
- [Windowsメニュー] → [Windows 管理ツール] → [インターネット インフォメーション サービス(IIS) マネージャー]押下
- [インターネット インフォメーション サービス(IIS) マネージャー]ウィンドウの表示
- ワークスペース内に[(コンピューター名)ホーム]と表示されているのを確認
- ワークスペース内のハンドラーマッピングアイコンをダブルクリック
- 操作ペインの[モジュールマップの追加…]を押下
- [モジュールマップの追加]ダイアログボックスが表示
- 要求パス:*.php
- モジュール:FastCgiModule
- 実行可能ファイル:C:\inetpub\php-7.1.10-nts-Win32-VC14-x64\php-cgi.exe
- […]ボタン押下
- [開く]ダイアログボックスが表示
- [C:\inetpub\php-7.1.10-nts-Win32-VC14-x64\]に移動
- [ファイル名]欄右のプルダウンメニューを[(*.dll)]に変更
- [php-cgi.exe]を選択→[ファイル名]欄に[php-cgi.exe]と表示されたのを確認
- [開く]ボタン押下
- 名前:PHP_via_FastCGI
- [要求の制限…]ボタン押下
- [OK]ボタン押下
- [モジュールマップの追加]ダイアログの表示→[この実行可能ファイルのFastCGI アプリケーションを作成しますか?[はい]をクリックすると、FastCGI コレクションにエントリを追加し、この実行可能ファイルを FastCGI アプリケーションとして実行することができます。]
- [はい]ボタン押下
- ワークスペース内に設定した内容の行が追加されているのを確認
- [メモ帳]を起動し、次の内容を記述する
- C:\inetpub\wwwroot\ 内に、info.phpというファイル名で保存する(C:\inetpub\wwwroot\info.phpとなる)
- ウェブブラウザで[http://localhost/info.php]を開きます。
- [PHP Version 7.1.10]から始まる、PHPの詳細な設定情報ページが表示されたらPHPの動作が確認できました。
- ウィンドウ内は左カラムを[接続ペイン]、中央カラムを[ワークスペース]、右カラムを[操作ペイン]と呼びます
- *表示されていない場合は、接続ペイン内のコンピューター名を押下
- 次の項目を設定
- プルダウンメニューから[FastCgiModule]を選択します。*プルダウンメニュー内に表示されていない場合は、IISのインストール時にCGIのチェックを行っていない可能性があります。確認してください
- [マップ]タブ内の[要求のマップ先が次の場合のみハンドラーを呼び出す]項目の[ファイルまたはフォルダー]を選択
- [OK]ボタン押下
PHPサンプルの実行
1 |
<?php phpinfo(); ?> |
PHPがファイルを書き換えるためのアクセス権限の設定
- C:\inetpub\wwwroot\のフォルダをマウスの右クリックして[プロパティ]を押下
- [wwwrootのプロパティ]ウィンドウの表示
- [セキュリティ]タブの[編集]ボタン押下
- [wwwrootのアクセス許可]ウィンドウの表示
- [追加]ボタン押下
- [ユーザーまたはグループの選択]ウィンドウの表示
- [選択するオブジェクト名を入力してください]欄に[iusr]と入力して[名前の確認]を押下
- [IUSR]と表示されれば、正しく認識されたことになります。[OK]ボタン押下
- [グループ名またはユーザー名]欄に[IUSR]が追加されていることを確認
- [アクセス許可]欄の[フルコントロール][許可]チェックボックスをチェック
- [OK]ボタン押下
- [OK]ボタン押下
- [メモ帳]を起動し、次の内容を記述する
- C:\inetpub\wwwroot\ 内に、countup.phpというファイル名で保存する(C:\inetpub\wwwroot\countup.phpとなる)
- ウェブブラウザで[http://localhost/countup.php]を開きます。
- ウェブブラウザでリロードするたびに数字が増えていけば、保存→読込の動作が行えていることを示しています。
- *[名前が見つかりません]ウィンドウが出たら[iusr]のスペルミスの可能性があります確認してください
動作確認用PHPサンプル(変更)の実行
1 2 3 4 5 6 7 8 9 10 |
<?php $fileName = 'count.txt'; $count = 0; if(is_readable($fileName)){ $count = file_get_contents($fileName); } $count++; echo $count; file_put_contents($fileName, $count); ?> |
参考
- PHP on Windows ガイドライン | IIS | マイクロソフト 技術情報(https://msdn.microsoft.com/ja-jp/gg535422.aspx)
- Windows 7のIIS上でPHPを動かす – なにか作る
- オススメ
- このページの情報のアップデートが欲しかったので自分で書いた