繁体   English   中英

如何使用Apache 2.4和PHP 5.4启用FastCGI

[英]How to enable FastCGI with Apache 2.4 and PHP 5.4

我做了什么:

从源代码安装apache 2.4和php 5.4。

apache的配置:

./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=event

PHP配置

./configure --prefix=/usr/local/php \ 
--with-mysql=mysqlnd\
--with-pdo-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--enable-mbstring \
--with-freetype-dir \
--with-jpeg-dir\
--with-png-dir\
--with-zlib \
--with-libxml-dir=/usr/local/libxml2 \
--enable-xml \
--enable-sockets \
--enable-fpm \
--with-mcrypt \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--with-bz2\
--with-apxs2=/usr/local/apache/bin/apxs

在httpd.conf文件中,我启用了mod_proxy.so和mod_proxy_fcgi.so并添加以下配置:

<IfModule proxy_module>
  ProxyRequests off
  ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/$1
</IfModule>

从phpinfo(),我看到服务器API是FPM / FastCGI

我的问题:我将DirectoryIndex设置如下。 我在DirectoryRoot中有index.html,它是“ / var / www”。 当我访问localhost时,应该看到index.html的内容。 但它给出了一个404文件未找到。

<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

当我在上面的代码中切换index.html和php的位置时。 这次html文件在php文件的前面。 然后,当我访问localhost时,可以看到正确的内容。 然后我检查了apache错误日志。 它说:

[2014年5月1日星期三23:21:15.968659] [proxy_fcgi:错误] [pid 3415:tid 140603093 993216] [客户端192.168.1.157:60384] AH01071:收到错误消息“主脚本未知” \\ n

当/ var / www中只有index.php文件时,而像

<IfModule dir_module>    DirectoryIndex  index.html index.php</IfModule>

还得到了404,访问了本地主机。

我的问题:

  1. 如何解决以上问题?

  2. 我对fastcgi的配置做了一些研究。 这样这个他们没有提到mod_proxy_fcgi,但是都引用了这个

“ FastCGIExternalServer /var/www/cgi-bin/php5.fcgi -host 127.0.0.1:9000”

所以我不确定我是否正确使用FastCgi? 这种错误的方式会导致上述问题吗?

【PS】谢谢雷吉罗。 我没有使用vhost,并且已经检查了error.log。 似乎与php-fpm有关。 浏览器中的响应页面显示“找不到文件”,而不是“ 404”,尽管响应代码为404。这是error.log中的内容

[2014年5月1日星期三23:21:15.968659] [proxy_fcgi:错误] [pid 3415:tid 140603093 993216] [客户端192.168.1.157:60384] AH01071:出现错误“主脚本未知\\ n”

我尝试将所有以“ .php”结尾的请求转发给fcgi。 但是上面的错误看起来像是当我请求index.html时,它也被转发到fcgi,fcgi无法处理它。(这是我的猜测)有关此转发的配置,请参见上面的代码或搜索此代码“ fcgi://”的页面。

这是我的目录配置。 我不确定这是否是您所需要的。

DocumentRoot "/var/www"
<Directory "/var/www">
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>

这在某种程度上是一个链接的答案,但是我与许多遇到这个问题的人共享一个答案,而且似乎可以解决问题。

签出此GIST-> https://gist.github.com/diemuzi/3849349

在这里,您将找到我所有用于Apache和PHP-FPM的工作配置。 这似乎是组织我的配置的好地方,而不是将其粘贴到此处并使其他人困惑。 该链接不会过期,因此无需担心。

也许您也可以将我的工作示例与已有的示例进行比较,找到当前未使用的缺少之处。 希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM