IIS で使うときのPHP設定
できれば使いたくない組み合わせだったのだけれど、仕事のつなぎの都合しょうがないので設定する事に。一応動いたのでメモがてら。突っ込み歓迎です。
IIS6 + php5 の組み合わせです。多分以下で動きます。黒い星がはまったポイントでした。まあ、こういう状況にならないように組み合わせは考えましょう...。IIS6とかひどいなぁ...とか思った。あっちからこっちから設定しないといけない。
-
- ISAPI を使う場合
インストールするものなしで、php を設置して iis の isapi でやる場合です。
- (IE)php のサイトからダウンロード、php5 zipでとってくる方がよさそう
- (エクスプローラ)C:\ 直下に上記のzipを展開した フォルダを php とでもリネームして設置する。
- (コンパネ->システム) C:\php に対して、コンパネのシステムの環境変数から、PATHを通す。
- (コンパネ->システム) 同じく環境変数 PHPRC の値を php.ini を置くフォルダに設定する。と思ったのだけど、どうも c;\Windows 配下にphp.ini を置いた方がよさげ。
- ここで再起動
- (エクスプローラ)C:\php 配下の php5isapi.dll 他 php5ts.dll とかにもかな? に IIS_WPG の実行権限をつける。 動作環境に応じてはIUSR_マシン名とか USERS もつける。だいたいphp に入ってくるdll の実行権限でひっかかりますね... orz(★) *1
- (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 経由で何人かに教えてもらったのだけど、iis で php やる場合には、FastCGIを使った方がパフォーマンスなどなどの側面から推奨とのことです。
IIS7以降はいらないみたい。手順はダイジェストにですが...
- php5 を NTS(Non Thread Safe な方) で取ってきてphpもろもろの設定。このときマッピングは書くけどisapiのとこはなにも書かなくてok。NTSをつかうのは、FastCGIのおかげでphp自体はスレッドセーフである必要がないこと。それから、nts のほうが速いから。
- FastCGI をインストールして、FastCGIの設定ファイルを書く。
- あとはやっぱりイヤンなWindows の権限設定...
一応どちらでも設定できるようにはなりました。アドバイスくれた人どうもありがとう。実測はしなかったけど、FastCGI使った方がFastCGIの動作原理と、phpnts版の恩恵にあずかれるので速いですね。