apro php5-fpm在chroot启用时出现404错误

时间:2014-09-23 09:04:56

标签: apache php ubuntu-14.04 chroot

我知道这个问题已被多次提出,但我没有看到任何解决方案。

我在UBUNTU 14上配置了mod_proxy_fcgi + php5-fpm + apache 2.4,其工作完全正常

我想让php-fpm chrooted (因此用户不会访问共享env中的其他用户资源)if config:

prefix = /var/www/html/example.com/public_html/ 
chroot = $prefix 
chdir = / 

配置后:如果我在浏览器中访问php脚本,我会收到404错误"找不到文件"

如果我在chroot配置上面注意这个,那么php再次运行没有任何错误!

2 个答案:

答案 0 :(得分:0)

我不知道chroot是否是完美的解决方案。 chroot不会自动意味着更好的安全性。更好的方法是使用suexec在另一个用户下运行每个站点。然后,每个客户都有自己的用户,只有自己的文件夹才具有指定的权限。

chroot很好但是有些问题。如果您计划为用户提供系统的SSH条目,那么chroot很有趣。

https://serverfault.com/questions/139826/apache-suexec-php-fpm-how-to-set-them-up

答案 1 :(得分:0)

在Freenod频道#php-fpm名为“Kiranos”的人帮我解决了这个问题。

我的设置是:Apache 2.4.7 + mod_proxy_fcgi + php5-fpm on Ubuntu 14.04

问题是,我在vhost中有与php-fpm socket的TCP连接,如

ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/example.net/public_html/$1

在php-fpm pool conf我有

chroot = /var/www/html/example.net/public_html/

注意:由于Apache 2.4.7不支持unix socket连接,所以我不得不使用TCP。使用TCP时,无需在ProxyPassMatch中提及完整的文档路径以进行chrooting。

vHost中的错误配置:

ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/example.net/public_html/$1

在vHost中纠正错误:

ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/$1

这样做后chroot正在工作..