我的系统是:
wx3# uname -a FreeBSD wx3 9.0-RELEASE FreeBSD 9.0-RELEASE #0: Tue Jan 3 07:46:30 UTC 2012 [email protected]:/usr/obj/usr/src/sys/GENERIC amd64 wx3#
安装包:
wx3# pkg_info | grep -Ei '^apache|^ap22-mod_fastcgi|^php5-5.3|^spawn-fcgi' ap22-mod_fastcgi-2.4.6_2 A fast-cgi module for Apache apache-2.2.21 Version 2.2.x of Apache web server with prefork MPM. php5-5.3.8 PHP Scripting Language spawn-fcgi-1.6.3 spawn-fcgi is used to spawn fastcgi applications wx3#
apache的configuration文件:
wx3# cat mod_fastcgi.conf LoadModule fastcgi_module libexec/apache22/mod_fastcgi.so <IfModule mod_fastcgi.c> AddHandler php5-fastcgi .php FastCgiExternalServer /usr/local/www/apache22/data/php -socket /var/run/spawn_fcgi.sock </IfModule> wx3#
这是我试图从远程打phpinfo.php文件
mbp:~ alexus$ curl -I XXXX/php/phpinfo.php HTTP/1.1 200 OK Date: Tue, 13 Mar 2012 01:28:14 GMT Server: Apache/2.2.21 (FreeBSD) mod_ssl/2.2.21 OpenSSL/0.9.8q DAV/2 mod_python/3.3.1 Python/2.7.2 mod_fastcgi/2.4.6 X-Powered-By: PHP/5.3.8 Content-Type: text/html mbp:~ alexus$
现在,我试图创build一个虚拟主机,所以我复制已经工作fastcgi让PHP工作:
wx3# cat X.conf <VirtualHost *:*> ServerName XXX DocumentRoot /home/X/X/htdocs/ <IfModule mod_fastcgi.c> AddHandler php5-fastcgi .php FastCgiExternalServer /home/X/X/htdocs/php -socket /var/run/spawn_fcgi.sock </IfModule> LogLevel debug CustomLog /home/X/X/logs/access_log combined ErrorLog /home/X/X/logs/error_log </VirtualHost> wx3#
击中相同的phpscript
mbp:~ alexus$ curl -I XXX/php/phpinfo.php HTTP/1.1 200 OK Date: Tue, 13 Mar 2012 01:31:33 GMT Server: Apache/2.2.21 (FreeBSD) mod_ssl/2.2.21 OpenSSL/0.9.8q DAV/2 mod_python/3.3.1 Python/2.7.2 mod_fastcgi/2.4.6 Last-Modified: Mon, 12 Mar 2012 21:08:11 GMT ETag: "97c8ef-14-4bb1223c8a4c0" Accept-Ranges: bytes Content-Length: 20 Content-Type: application/x-httpd-php mbp:~ alexus$
我错过了什么? 为什么它会对默认主机起作用,并且不能用于虚拟主机,尽pipe我几乎从默认主机上复制和粘贴了一个工作configuration,只是改变一个目录?
看来你的<VirtualHost *:*>定义很差,因为你的服务器已经加载了mod_fastcgi(正如你可以在Server: header中看到的那样),但是它不知道.php必须通过php5来完成-fastcgi处理程序。
你定义了指令NameVirtualHost ? 你的计算机知道,它的IP是否有名字XXX(使用/ etc / hosts文件,如果没有DNSlogging)?