DirectAdmin – 其他用户的目录树中的子域的DocumentRoot与运行PHP

我在我的专用主机上安装了DirectAdmin。

我想要实现的是在域“C.com”上build立一个属于用户“C”的子域,以便其文档根目录是另一个用户(P)目录树中的一个目录

|*if SUB="mysubdomain"| |?DOCROOT=/home/P/domains/mysubdomain.somedomainname| |*endif| 

这只要我试图查看平面的HTML文件,即

 C.com/index.html // Hello World! 

每当我尝试查看一个PHP文件,我得到一个500错误,即

 C.com/index.php // Internal Server Error 

index.php很简单,不应该抛出任何错误,对吧?

 <?php ?> 

由于需要太多空间来描述的原因,我无法查看日志文件。 另外,我并不熟悉DirectAdmin,但是我已经成功地在C.com中设置了其他子域,这些子域在用户C的目录树中具有DocumentRoot,并且完全像我期望的那样运行PHP。

主要问题:

我正确的问题是指向DocumentRoot其他用户的目录树?

次要问题:

是否有任何简单的configuration调整可以使这项工作按预期进行?

我想你是用suPHP而不是mod_php来运行PHP。 这意味着PHP脚本在拥有域的用户(在这种情况下是用户C)下执行。 但是,如果PHP文件由不同的用户(在本例中为用户P)拥有,suPHP将会抛出一个错误(应该logging在您的子域的错误日志中),并返回一个500 HTTP错误。

你需要做的是改变该子域的虚拟主机中的SuexecUserGroupvariables的configuration。 为此,您可以尝试以下操作(在Directadmin的自定义HTTPDconfiguration中):

 |*if SUB="mysubdomain"| |?DOCROOT=/home/P/domains/mysubdomain.somedomainname| |?USER=P| |?GROUP=P| |*endif| 

这应该工作,如果你的虚拟主机模板有这样的一行:

 SuexecUserGroup |USER| |GROUP| 

我从来没有尝试过,但理论上它应该工作。 另外请注意,PHP文件应该将其权限设置为0644,并且包含PHP脚本的文件夹应该设置为0755(或0711)。 如果您拥有更广泛的权限,suPHP将会抛出另一个错误并返回500 HTTP状态。