我在 apache2 下运行 FastCgiServer 时遇到问题。当我定义一个配置了静态 fcgi 服务器的虚拟主机时,我从 suexec 收到一个错误:
command not in docroot (/var/www-blah/dispatcher.fcgi)
这是正确的,因为 docroot 是/var/www
. 但是当我使用由魔法生成的动态 fastcgi 时AddHandler
,我也在使用suexec
并且不会出现同样的问题——即使脚本存在于/home/.../public_html/dispatcher.fcgi
.
是什么原因导致suexec
在那里正确运行?以及如何在虚拟主机上复制该行为?
更新:实际上,我将我的东西从/var/www-blah
移到/var/www/blah
,所以它在 docroot 下并且可以正常工作。我猜 suexec 有一些 public_html 检测。
仍然不起作用的是 suexec 下的动态 fastcgi /var/www/...
。即使脚本由正确的用户拥有,suexec 也不会显示任何错误并且似乎没有运行(脚本作为 www-data 工作)
suexec 仅在 apache 文档根目录中执行程序。请参阅suexec 安全模型,特别是第 13 点。