我最近开始使用suPHP,并且花费了大量时间debuggingconfiguration和不同的编译选项,以获得实际可行的结果。 我已经尝试过通过他们的邮件列表联系开发团队,但显然是由幽灵组成的。
我正在尝试使用chroot参数,但它触发了一个我无法解决的500内部错误。
我为DocumentRoot定义使用DBD MySQL:
<VirtualHost *:80> ServerName * DBDriver mysql DBDParams <params> DBDocRoot "SELECT document_root FROM domains WHERE name=%s" HOSTNAME suPHP_Engine on AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml suPHP_AddHandler application/x-httpd-php </VirtualHost>
一旦VirtualHost设置了DocumentRoot,suPHP应该应用一个额外的chroot。 请参阅下面我的/etc/suphp.conf的相关部分:
docroot=${HOME} chroot=${HOME} allow_file_group_writeable=false allow_file_others_writeable=false allow_directory_group_writeable=false allow_directory_others_writeable=false check_vhost_docroot=false
chroot参数不可能更简单,但suPHP spits:
Caused by SystemException in API_Linux.cpp:465: chdir() failed: No such file or directory
…当我向PHP脚本发出请求时 suphp日志不包含任何信息,这行来自Apache错误日志。
现在地球上的任何人现在如何设置这个可怕的chrootfunction? 我已经经历了无数的论坛和邮件从上市,但没有人还没有给出正确的答案(即使这个function已经修复了不可思议的次数)。 或者,也许我应该切换到suExec,希望它会提供更令人满意的结果…?
你的问题是由于你不明白chroot是如何工作的。 一旦你chroot进入/ home / user,那就是新的根目录,path是“相对的”。 所以,如果你的文件在/ home / user / public_html并且想要chroot到/ home / user那么chdir实际上应该是/ public_html和fastcgi文档根目录是相同的(/ public_html)。
suPHP在启动过程的更远的点上运行chroot在技术上是不可能的。