Windows 10 Pro で IIS と php を連携してみる

Windows 10 Pro で IISphp を連携してみる

参考にしたサイトはこちら
Windows 10のIIS上でPHPを動かす
PHP マニュアル
日本語利用の為の設定
 
以下の手順でphpをインストール
Win版PHPをインストールしてみる
php-7.2.3-nts-Win32-VC15-x64.zip をDLしてインストール
> php -v
PHP 7.2.3 (cli) (built: Feb 28 2018 05:48:02) ( NTS MSVC15 (Visual C++ 2017) x64 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
 
php.ini の設定
short_open_tag = On ;これは好みかなぁ・・
zend.multibyte = On
zend.script_encoding = UTF-8
//;zend.detect-unicode NULL
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 = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
mbstring.substitute_character = none
mbstring.func_overload = 0
mbstring.strict_detection = Off
  
項目の説明
コア php.ini ディレクティブに関する説明
・zend.multibyte="0"−>On
 マルチバイトエンコーディングで書かれたソースファイルをパースできるようにします。 zend.multibyte を有効にしないと、マルチバイト文字データの中に特殊文字を含むエンコーディング (SJIS や BIG5 など) を使えません。 ISO-8859-1 互換のエンコーディングである UTF-8EUC などを使う場合は、このオプションは不要です。
 zend.multibyte を有効にしたい場合は、mbstring 拡張モジュールを有効にしなければいけません。
 
・zend.script_encodin=0−>UTF-8
 この値を使うのは、 declare(encoding=...) ディレクティブがスクリプトの先頭に存在しない場合です。 ISO-8859-1 非互換のエンコーディングを使う場合は、 zend.multibyte と zend.script_encoding を両方とも指定する必要があります。
 リテラル文字列は、zend.script_enconding から mbstring.internal_encoding に変換されます。 mb_convert_encoding() が呼ばれたときと同じです。
 
・ zend.detect_unicode boolean(デフォルトのまま)
 BOM (Byte Order Mark) を調べ、 ファイルが有効なマルチバイト文字を含むかどうかを確認します。 この検出は、 __halt_compiler() の処理より前に行われます。 Zend Multibyte モードでのみ利用可能です。
 
cgi.force_redirect="1"−>"0"
は、ほとんどのWebサーバーのもとで CGI として PHP を実行する際のセキュリティを確保するために必要です。未定義のままの場合、PHPはデフォルトでこれを on にします。 これを off にする時は、自己責任 の下に 行なってください。
注意:
Windowsユーザー: IIS を使う場合は、このオプションは 必ず off にしなければなりません。 OmniHTTPD や Xitami の場合も同様です。
 
cgi.fix_pathinfo="1"
 本来の PATH_INFO/PATH_TRANSLATED サポートをCGIで提供します。 PHPの以前の動作は、 SCRIPT_FILENAMEにPATH_TRANSLATEDを設定するというもので、 PATH_INFOの定義を理解していませんんでした。 PATH_INFOに関する詳細については、CGIの仕様を参照してください。 このオプションを1にすることにより、 PHP CGIはこのパスを仕様にあうように修正します。 ゼロとすると、 PHPは以前と同様に動作します。これは、デフォルトでオンになっています。 PATH_TRANSLATEDではなく、SCRIPT_FILENAMEを使用するようにスクリプト を修正する必要があります。
 
fastcgi.impersonate="0"
 IIS (または WINNT ベースの OS) のもとでの FastCGI は、 クライアントをコールする際にセキュリティトークンを 匿名化する機能をサポートしています。 これにより、IIS がリクエストを処理するセキュリティコンテキストを 定義できるようになります。Apacheのもとで実行される mod_fastcgi は現在 (2002/03/17) この機能をサポートしていません。 IIS のもとで実行するには、1 に設定してください。 デフォルトは 0 です。
 
fastcgi.logging="1"
 FastCGI 使用中の SAPI ロギングを有効にします。 デフォルトはロギングが有効となっています。
 
IISのインストール
コントロール パネル->プログラム->Windowsの機能の有効化または無効化
 インターネット インフォメーション サービス
  ->Web管理ツール をチェック
  ->アプリケーション開発機能 をチェック
   ->CGI(追加) をチェック
 をクリックしてインストールする
 
http://localhost/ にアクセスして正常に表示されることを確認する
 
IISがPHP7フォルダにアクセスできるようにアクセス権の設定する
php7フォルダを右クリックしてプロパティを表示
 ->セキュリティtab
  ->編集ボタン
   ->追加ボタン
    ->詳細設定ボタン
     ->検索ボタン
      ->検索結果より IIS_IUSERS を選択して OKボタン
   ->選択するオブジェクト名を入力してくださいに
    PC名\IIS_IUSERS が表示されているのを確認してOKボタン
  ->グループ名またはユーザー名にIIS_IUSERS(PC名\IIS_IUSERS)
   が表示されていることを確認してOKボタン
 
IISの設定
コントロール パネル->システムとセキュリティ->管理ツール
 ->コンピューターの管理
  ->サービスとアプリケーション
   ->インターネット インフォメーション サービス をクリックする
    ->ホームペインのハンドラーマッピングをダブルクリックする
     ->操作ペインのモジュールマップの追加をクリックする
      ->モジュールマップの追加ペインが表示される
       ->要求パス:*.php
       ->モジュール:FastCgiModule
       ->実行可能ファイル:/path/to/php-cgi.exe
       ->名前:PHP_via_FastCGI
       を入力後OKをクリック後はいをクリック
    ->接続ペインのPC名をクリックする
      ->操作ペインの再起動をクリック
 
 C:\inetpub\wwwroot\phpinfo.php を以下の内容で作成する
 <? php phpinfo(); ?>
 http://localhost/phpinfo.php で phpinfo() の内容が表示される