主要问题:

主要问题:

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

我想要实现的是在属于用户“C”的域“C.com”上设置一个子域,以便它的文档根目录是另一个用户(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 指向其他用户的目录树?

次要问题:

是否有任何简单的配置调整可以使其按预期工作?

答案1

我猜你用 suPHP 而不是 mod_php 来运行 PHP。这意味着 PHP 脚本在拥有域的用户(在本例中为用户 C)下执行。但是,如果 PHP 文件由其他用户(在本例中为用户 P)拥有,suPHP 将抛出错误(应记录在你子域的错误日志中)并返回 500 HTTP 错误。

您需要做的是更改SuexecUserGroup该子域的虚拟主机中变量的配置。为此,您可以尝试以下操作(在 Directadmin 的自定义 HTTPD 配置中):

|*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 状态。

相关内容