我知道这个问题已被多次提出,但我没有看到任何解决方案。
我在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再次运行没有任何错误!
答案 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正在工作..