WindowsおよびIIS7上のPHP

PHPには多くの優れたアプリケーションが記述されています。 さえない
非常に多く、それらのいくつかは非常に優れているので、これらを使用しないのはなぜですか
Windowsアプリケーション? 特に、内部ポータルがWindowsで実行されている場合、および
外部の会社のWebサイトを回転させるUnixマシンで-その後
インフラストラクチャとWindowsのホストを節約できます
サーバーは外部サイトでもあります。 または、標準化する場合
Windowsのインフラストラクチャおよびホストサイト
開発者とユーザーが作業するためのプラットフォーム
Windowsプラットフォーム。
ウェブサイトwww.iis.netで
見つけることができます
リスト
人気のあるPHPアプリケーション
IISでのインストール手順。 それらを実行するには
IISでの変更は不要
PHPコード。

FastCGIモジュールで使用するPHPをインストールおよび構成します。


開始するには、PHPを正常に使用するには
PHPがあればWindowsはいいだろう
インストールします。
ステップ1. PHPをダウンロードする
PHP.netサイトで、 ダウンロードする必要があります
PHP for Windowsの最新バージョン 。 FastCGIでの使用を推奨
モジュール自体は、スレッドセーフ制御なしでPHPバージョンをインストールします。
FastCGIは、単一スレッドでの実行とサポートを保証します
PHP自体のスレッドセーフティコントロールは追加のチェックを導入し、
ロックにより、パフォーマンスが大幅に低下します。 だから
非スレッドセーフWin32バイナリを選択します(執筆時点ではバージョン5.2.6が該当します)
この投稿)
非スレッドセーフは、特に
IISでFastCGIを使用し(最初のリリースはバージョン5.2.1でした)、
他の環境は推奨されません。 ところで、バージョン5.2.2からZendは深刻です
WindowsでのPHPパフォーマンスの最適化に取り組んでいますが、失敗することはありません
してください。 バージョン5.2.1と5.2.2を比較すると、処理速度の違い
クエリは、簡単な負荷テストで簡単に確認できます。
ステップ2. PHPのインストール
インストールは非常に簡単です。
実行可能ファイルは、このアーカイブを展開するだけです。たとえば、
C:\ Web \ PHPディレクトリ。
基本構成として、推奨設定を使用します。
同じディレクトリにあるphp.iniのphp.ini-recommendedファイルのコピーを作成して開きます
それを編集するには、その後、上記のファイルを調べて次のコメントを外します
セキュリティとほとんどのPHPとの互換性を確保する文字列
アプリケーション:

ステップ3. PHPの機能を確認する
IISを構成するまで、インタープリターが機能しているかどうかを確認します
たとえば、コマンドc:\ web \ php \ php.exe -info> c:\ test.txtを実行するだけで簡単にできます。

IIS7にFastCGIモジュールをインストールして構成します。


IIS7を使用している場合、操作の名前について何かが教えてくれます
システム-Windows Vista? Windows Server 2008には当てはまりません! またはあなたはハッカーであり、
IIS7を別の場所に配置しますが、これは非標準のソリューションであり、
サポート;)。
手順1. FastCGIをインストールする
すぐにお願いします-Windows Server 2008およびWindows Vistaに付属するIIS7
Service Pack 1 FastCGIモジュールは既に含まれています。 接続する必要があるだけです
設定。 これを行うには、Vistaで[コントロールパネル]-> [プログラム]を開き、
「Windowsの機能をオンまたはオフにする」:
ControlPanel-プログラム

その後、IISに機能をインストールする必要があります:インターネットインフォメーションサービス
-> World Wide Webサービス->アプリケーション開発機能-> CGI。 同時に
CGIとFastCGIの両方のサポートがインストールされます。
IIS_CGI_Feature

Windows Server 2008では、プロセスは似ています:サーバーマネージャー->ロール->追加
役割サービス-> Webサーバー->アプリケーション開発-> CGI。
実際、FastCGIモジュールを有効にするために必要なことはすべてあります。
ステップ2. IIS7の構成
1. IISマネージャーを開き、構成するノード(サーバー)を選択します
PHPサポート。 そして、ハンドラーマッピングを選択します。
ハンドラーマッピング
HandlerMappingsOpened

2. [ハンドラーマッピング]ページで、[モジュールマッピングの追加]リンクを選択し、
ウィンドウに次の値を入力します。
要求パス:* .php(拡張子が.phpのすべてのファイルを処理)
モジュール:FastCgiModule(FastCGIモジュール)
実行可能ファイル:C:\ Web \ PHP \ php-cgi.exe(PHPへのパス)
名前:PHP(便宜上の名前)
PHPハンドラー

この設定を追加すると、登録について尋ねるウィンドウが表示されます
このハンドラー用のFastCGIアプリケーション。 確認します。
上記のアクションにより、PhpSitesディレクトリに次のものが作成されました。
web.configファイル:

<? xml version = "1.0" encoding = "UTF-8" >
< 設定 >
< system.webServer >
< ハンドラー >
< add name = "PHP" path = "*。php" verb = "*"
modules = "FastCgiModule" scriptProcessor = " C:\ Web \ PHP \ php-cgi.exe "
resourceType = "指定なし" />
</ ハンドラー >
</ system.webServer >
</ 設定 >
*このソースコードは、 ソースコードハイライターで強調表示されました。


これで、PHPの正常性を確認できます。
ステップ3.設定が正しいことを確認します。
PHPを構成したノードディレクトリにファイルを作成します
index.php:
  <?<phpinfo(); <br />?> 

そして、HTTPリクエストを介してこのファイルにアクセスします。 その結果、すべてが順調で、
カルマが破損していない場合、リクエストは正しく処理されます。
phpinfo

PHPの設定に関する推奨事項
Iis7


もちろん、PHPを使用する場合
IIS7の落とし穴が発生する可能性があります
期待される結果を達成するために戦う(素晴らしい仕事
Windows上のPHPアプリケーション)。
頻繁に遭遇する石を破壊するためのハンマーを以下に示します。

PHPプロセスの再起動頻度



PHPを使用する場合
FastCGIを使用するIIS7
モジュール、FastCGIモジュール自体が処理します
プロセスおよびリソース管理、再起動メカニズムを確認する必要があります
PHPでのプロセス(リサイクル)
FastCGIは干渉しません。 これは次の場合に簡単です
常に再起動するようにFastCGIを構成します
PHPよりも早く処理します。
FastCGI設定に設定があります
instanceMaxRequests。処理後のリクエスト数を決定します。
プロセスが再起動します。 PHPでは、同様のパラメーター
変数PHP_FCGI_MAX_REQUESTSの値によって設定されます。 明らかに与える
プロセスを操作するFastCGIの能力、十分な
instanceMaxRequests <= PHP_FCGI_MAX_REQUESTを設定します。
これは、ファイルを編集して行うと便利です。
applicationHost.config(ディレクトリC:\ windows \ system32 \ inetsrv \ config \に隠れています)。
次の情報が構成に含まれている必要があります。
< fastCgi >
< application fullPath = " C:\ inetpub \ php \ php-cgi.exe "
maxInstances = "4" instanceMaxRequests = "10000" >
< 環境変数 >
< 環境 変数 = "PHP_FCGI_MAX_REQUESTS" = "10000" >
</ 環境変数 >
</ アプリケーション >
</ fastCgi >
*このソースコードは、 ソースコードハイライターで強調表示されました。

PHPの複数のバージョンを使用する


さまざまなバージョンのPHPを使用できるため、
サーバーでホストされているアプリケーションは、有効にするとよいでしょう
サイトごとに異なるバージョンを使用します。
applicationHost.config構成ファイル内
PHPの異なるバージョンのセクションを定義するだけです。
< fastCgi >
< application fullPath = "C:\ inetpub \ php \ php-cgi.exe" >
...
</ アプリケーション >
< application fullPath = "C:\ inetpub \ php4 \ php4.exe" >
...
</ アプリケーション >
< application fullPath = "C:\ inetpub \ php41 \ php41.exe" >
...
</ アプリケーション >
</ fastCgi >
*このソースコードは、 ソースコードハイライターで強調表示されました。
そして、すでに各サイトに対して、いずれかを使用するモジュールが構成されています
バージョン(上記のインターフェースを使用できます。または、
テキストの構成を編集します):
< ハンドラー >
< add name = "PHP4" path = "* 。php " verb = "*" modules = "FastCgiModule"
scriptProcessor = " C:\ inetpub \ php \ php41.exe "
resourceType = "指定なし" />
</ ハンドラー >
*このソースコードは、 ソースコードハイライターで強調表示されました。

さまざまなPHPプリセットを使用する


PHPを別の方法で構成する場合
さまざまなサイト、それからすべてこれは構成設定を通して記述できます
applicationHost.config。
< fastCgi >

< application fullPath = " C:\ inetpub \ php \ php-cgi.exe "

arguments = "-d my.website = wordpress" >

< 環境変数 >

< 環境 変数 = "PHPRC" = "C:\ inetpub \ wordpress" />

</ 環境変数 >

</ アプリケーション >

< application fullPath = " C:\ inetpub \ php \ php-cgi.exe "

arguments = "-d my.website = phpsite" >

< 環境変数 >

< 環境 変数 = "PHPRC" = "C:\ inetpub \ phpsite" />

</ 環境変数 >

</ アプリケーション >

</ fastCgi >
*このソースコードは、 ソースコードハイライターで強調表示されました。

その後、設定は、対応するサイトにリンクします
web.config:
< system.webServer >

< ハンドラー accessPolicy = "読み取り、スクリプト" >

< add name = "PHP" path = "* 。php" verb = "*" modules = "FastCgiModule"

scriptProcessor = " C:\ inetpub \ php \ php-cgi.exe | -d my.website = wordpress "

resourceType = "指定なし" requireAccess = "スクリプト" />

</ ハンドラー >

</ system.webServer >
*このソースコードは、 ソースコードハイライターで強調表示されました。

指定された構成に従って、php.ini
各サイトのディレクトリに配置する必要があります。
設定を編集するとき、パスへの一致を厳密に観察する価値があります
適切なバージョンのPHPおよび
applicationHost.configおよびweb.configで
パスが混乱している場合は、予期しない結果を避けてください。
一見、設定の編集は複雑に思えるかもしれませんが、
不便なプロセスですが、すぐに設定に慣れるとすぐに
XMLとメソッドの配布
Ctrl + C、Ctrl + V、他の人の存在に驚くでしょう
設定方法:)

PHPセキュリティ設定


php.iniにはさまざまな設定があり、その多くは
PHPの使用のセキュリティに影響します。 カスタマイズする
すべてが適切であり、価値のある原因です。
allow_url_fopen = Offに設定
; ファイル操作にURLを使用する
allow_url_include = Offを設定
register_globals =オフ
; グローバル変数の登録を解除します
open_basedir = "c:\ inetpub \";
PHPが実行されるディレクトリの制限

max_execution_time = 30; 制限
スクリプトランタイム
max_input_time = 60
memory_limit = 16M;
メモリ制限
upload_max_filesize = 2M
post_max_size = 8M
max_input_nesting_levels = 64
display_errors =オフ
; エラーメッセージを無効にする
log_errors =オン
error_log = "C:\ error.log"
Exposure_php =オフ
; PHPの存在を隠す

おわりに


Windows上のPHPは
面白くて便利なのは、主にそれが機能することです。 チーム
IISはPHPの作成に取り組んでいます
窓よりも悪くない
Unix / Linux(もちろん、もっとうまくやってみてください)。
これはMicrosoftにとって新しいトピックなので、次のことができます。
いくつかの間違いを犯すと、私たちは何かに気づかないか理解できないので、
開発者と管理者からコメントを受け取ることは非常に重要です。
あなたが今見ているあなたの願いや問題をコメントに書いてください
Windows上のPHP、そして
問題を解決し、願いを実行してください。

Source: https://habr.com/ru/post/J30154/


All Articles