我做了什么:
从源代码安装apache 2.4和php 5.4。
apache config:
./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 config
./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(),我看到Server 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错误日志。它说:
[Thu May 01 23:21:15.968659 2014] [proxy_fcgi:error] [pid 3415:tid 140603093 993216] [client 192.168.1.157:60384] AH01071:收到错误'主脚本unkn own \ n'
当/ var / www中只有index.php文件时,保留httpd.conf
<IfModule dir_module> DirectoryIndex index.html index.php</IfModule>
还有404,访问本地主机。
我的问题:
如何解决上述问题?
“FastCGIExternalServer /var/www/cgi-bin/php5.fcgi-host 127.0.0.1:9000"
所以我不确定我是否正确使用FastCgi?这种错误的方法会导致上述问题吗?
【P.S。】 谢谢regilero。我没有使用vhost,我检查了error.log。它似乎与php-fpm有关。浏览器中的响应页面显示“找不到文件”,而不是“404”,尽管响应代码是404.这是error.log中的内容
[Thu May 01 23:21:15.968659 2014] [proxy_fcgi:error] [pid 3415:tid 140603093 993216] [client 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>
答案 0 :(得分:2)
这是一个相互关联的答案,但是我与很多遇到你现在遇到的问题的人分享这个答案。它似乎可以解决问题。
结帐此GIST - &gt; https://gist.github.com/diemuzi/3849349
在那里,您将找到Apache和PHP-FPM的所有工作配置。这似乎是一个更好的地方来组织我的配置,而不是将它们粘贴在这里并使其他人感到困惑。此链接不会过期,因此不必担心。
也许您也可以将我的工作示例与您拥有的内容进行比较,并找到您当前未使用的缺失内容。希望这有帮助!