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() の内容が表示される