windowsでlighttpdを使いfastcgiを有効にする。
結構みなさん苦労されているようで。ていうかwindows+lighttpd+fastcgi+phpの組み合わせに関する情報が殆どない。海外サイトで喧々諤々のやり取りがあったので参考にしたらうまくいった。
参考URL
http://forum.lighttpd.net/topic/1164
まず、lightTPDのwindowsバイナリーを拾ってくる。インストーラーつきとzipがあるがどっちでもいい。
http://www.kevinworthington.com/category/computers/lighttpd/
(「自分じゃ試してないよ!俺に聞くなよ!」らしい。)
zipの場合 c:\lighttpd あたりに展開しておく。ディレクトリは
c:\lighttpd\
bin\
conf\
htdocs\
logs\
lib\
tmp\
その他...
こんな感じ。
とりあえずデフォルトの設定で立ち上げてみる。テスト用起動バッチファイル TestMode.bat を実行する。設定にエラーがあればここで教えてくれる。
OKならばconf\lighttpd-inc.confを編集する。
まずはモジュール読み込み設定。最低限"mod_fastcgi"が必要。
server.modules = ( "mod_access", "mod_accesslog", "mod_alias", "mod_cgi", "mod_fastcgi", "mod_rewrite", "mod_simple_vhost", "mod_ssi", "mod_status" )
fastcgi設定
fastcgi.server = ( ".php" => ( "localhost" => ( #"socket" => "TMP/php-fastcgi.socket", "host" => "127.0.0.1", "port" => 521, "docroot" => "C:LightTPD/htdocs", "check-local" => "disable" ) ) )
socketではダメで、host:portにしておく。portはなんでもいい。が、後で必要。意外に記述がないのが"docroot"要素。server.document-rootと同じ場所にする。
ここまでで再起動。たとえばdocrootにindex.phpとかを置いてブラウザからアクセスすると
got a FDEVENT_ERR, Don't know why
だそうだ。足らない。さっき設定したhost:portがまだ有効ではないから。
次はPHPの設定php.iniに以下を加える。どちらもコメントアウトされているだろうから見つけてコメントをはずし、値を変える。
cgi.fix_pathinfo=1 ... extension=php_sockets.dll
設定したhost:portでリクエストを待ってもらうためにphp-cgi.exeを実行する。
php-cgi.exe -b 127.0.0.1:521
この状態でdocroot以下のphpファイルにアクセスすると、さっきとは違いちゃんと結果が返ってくる。