Windows 10 Pro で IIS と php を連携してみる
Windows 10 Pro で IIS と php を連携してみる
参考にしたサイトはこちら
以下の手順で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
項目の説明
・zend.multibyte="0"->On
マルチバイトエンコーディングで書かれたソースファイルをパースできるようにします。 zend.multibyte を有効にしないと、マルチバイト文字データの中に特殊文字を含むエンコーディング (SJIS や BIG5 など) を使えません。 ISO-8859-1 互換のエンコーディングである UTF-8 や EUC などを使う場合は、このオプションは不要です。
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
を入力後OKをクリック後はいをクリック
->接続ペインのPC名をクリックする
->操作ペインの再起動をクリック
C:\inetpub\wwwroot\phpinfo.php を以下の内容で作成する
<? php phpinfo(); ?>
http://localhost/phpinfo.php で phpinfo() の内容が表示される