あったらしくるえるはてなくしょん

id:kskmeuk あったらしく

IIS で使うときのPHP設定

できれば使いたくない組み合わせだったのだけれど、仕事のつなぎの都合しょうがないので設定する事に。一応動いたのでメモがてら。突っ込み歓迎です。

IIS6 + php5 の組み合わせです。多分以下で動きます。黒い星がはまったポイントでした。まあ、こういう状況にならないように組み合わせは考えましょう...。IIS6とかひどいなぁ...とか思った。あっちからこっちから設定しないといけない。

    1. ISAPI を使う場合

インストールするものなしで、php を設置して iis の isapi でやる場合です。

  1. (IE)php のサイトからダウンロード、php5 zipでとってくる方がよさそう
  2. (エクスプローラ)C:\ 直下に上記のzipを展開した フォルダを php とでもリネームして設置する。
  3. (コンパネ->システム) C:\php に対して、コンパネのシステムの環境変数から、PATHを通す。
  4. (コンパネ->システム) 同じく環境変数 PHPRC の値を php.ini を置くフォルダに設定する。と思ったのだけど、どうも c;\Windows 配下にphp.ini を置いた方がよさげ。
  5. ここで再起動
  6. (エクスプローラ)C:\php 配下の php5isapi.dll 他 php5ts.dll とかにもかな? に IIS_WPG の実行権限をつける。 動作環境に応じてはIUSR_マシン名とか USERS もつける。だいたいphp に入ってくるdll の実行権限でひっかかりますね... orz(★) *1
  7. (IIS設定) IISのサイトの方の設定から、.php を php5isapi.dll にまわす処理を書く(ここは情報がたくさんありますね)

あと、↓のこいつが忘れがちな罠でした。IIS全体の拡張設定でphpの許可を書く必要があります (★★★)

このあと既定のサイトに、phpinfo.php を実行可能にして置いたら...

phpinfo(); を見るまでの長い旅でした...。それから Windows Server 2003 R2 とかだと Firewall で ポート80 閉じてたりするので、ここもあけないと他からアクセスできなかった... orz www

しかも次に MSSQL を呼べる設定をする必要がある... orz。 しかも、文字コードとかどうすりゃいいんだろw こまるなーはははー。

codeplex においてある、MSSQLServer 用の php ドライバとかでうまく動くのか不安だなー。しかもCakePHPとか、ISAPI_REWRITE とか置かないとまずそうだし。。 早めに移行せねば... 別鯖はやめに立ててもらおう。

その後で教えてもらったんだけど、FastCGIの方がイイらしい

twitter 経由で何人かに教えてもらったのだけど、iisphp やる場合には、FastCGIを使った方がパフォーマンスなどなどの側面から推奨とのことです。
IIS7以降はいらないみたい。手順はダイジェストにですが...

  1. php5 を NTS(Non Thread Safe な方) で取ってきてphpもろもろの設定。このときマッピングは書くけどisapiのとこはなにも書かなくてok。NTSをつかうのは、FastCGIのおかげでphp自体はスレッドセーフである必要がないこと。それから、nts のほうが速いから。
  2. FastCGI をインストールして、FastCGIの設定ファイルを書く。
  3. あとはやっぱりイヤンなWindows の権限設定...

一応どちらでも設定できるようにはなりました。アドバイスくれた人どうもありがとう。実測はしなかったけど、FastCGI使った方がFastCGIの動作原理と、phpnts版の恩恵にあずかれるので速いですね。

*1:たぶん、Windows とか、System32 とかに置かない場合いるみたい。