我的系统是:
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的配置文件:
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 X.X.X.X/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$
现在,我正在尝试创建一个虚拟主机,因此我复制已经运行的 fastcgi 以使 php 运行:
wx3# cat X.conf
<VirtualHost *:*>
ServerName X.X.X
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 X.X.X/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$
我遗漏了什么?为什么它适用于默认主机,却不适用于虚拟主机,尽管我几乎从默认主机复制并粘贴了工作配置,并且只是更改了目录?
答案1
似乎您对 的定义不正确<VirtualHost *:*>
,因为您的服务器已加载 mod_fastcgi(正如您在Server:
答案的标题中所看到的那样),但它不知道 .php 必须通过 php5-fastcgi 处理程序来完成。
您是否已定义指令名称虚拟主机? 您的计算机是否知道它的 IP 名称为 XXX(如果没有 DNS 记录,则使用 /etc/hosts 文件)?