尝试“设置 apache fastcgi”

尝试“设置 apache fastcgi”

我的系统是:

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 文件)?

相关内容