いけむランド

はてダからやってきました

CAMP とかいうネタを考えてみた

PHP Apocalypse という勉強会に参加した時に以下のネタを見て、CAMP (Cygwin+Apache+MySQL+PHP) というのがあってもいいんじゃないかと思ったのでやってみた。




Apache, MySQL, PHP はすべて Cygwin Ports からダウンロードできるため、さくっと入れる。

インストール後に httpd を起動しようとしたが、何故か無言で segmentation fault が発生し、それを調査するのが面倒だったため、他の httpd を探すことにした。

Cygwin Ports で他に配布されているものに lighttpd があったため、そちらを使ってみる。

lighttpd から php を使うには FastCGI も必要らしいということでそれも追加でインストールしておく。

lighttpd の設定は以下のブログを参考にした。

変更点は以下のとおりである。

--- lighttpd.conf.default	2012-01-09 00:28:05.000000000 +0900
+++ lighttpd.conf	2012-01-09 00:28:05.000000000 +0900
@@ -21,7 +21,7 @@
 #                               "mod_auth",
 #                               "mod_status",
 #                               "mod_setenv",
-#                               "mod_fastcgi",
+                               "mod_fastcgi",
 #                               "mod_proxy",
 #                               "mod_simple_vhost",
 #                               "mod_evhost",
@@ -212,14 +212,17 @@
 #### fastcgi module
 ## read fastcgi.txt for more info
 ## for PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini
-#fastcgi.server             = ( ".php" =>
-#                               ( "localhost" =>
-#                                 (
+fastcgi.server             = ( ".php" =>
+                               ( "localhost" =>
+                                 (
 #                                   "socket" => "/var/run/lighttpd/php-fastcgi.socket",
-#                                   "bin-path" => "/usr/local/bin/php-cgi"
-#                                 )
-#                               )
-#                            )
+                                   "host" => "127.0.0.1",
+                                   "port" => 7743,
+                                   "docroot" => "/srv/www/htdocs",
+                                   "bin-path" => "/usr/bin/php-cgi.exe"
+                                 )
+                               )
+                            )
 
 #### CGI module
 #cgi.assign                 = ( ".pl"  => "/usr/bin/perl",
  • php.ini の cgi.fix_pathinfo=1 を設定する。(php_sockets.dll は存在しないので設定しなくても良いはずである。)
  • php-cgi.exe を起動する。
% /usr/bin/php-cgi.exe -b 127.0.0.1:7743


準備ができたら localhost にアクセスしてみる。今回は /svr/www/htdocs 配下に phpinfo.php (phpinfo を呼ぶだけのスクリプト) を置いてみた。



cygwin+lighttpd+fastcgi+php-cgi


phpcygwin バイナリが FastCGI 経由で起動していることがわかる。


ただし、これだと Apache じゃないから CLMP になっちゃうな。