2

到目前为止,我已经搜索了很多线程,但似乎无法找到解决方案。在我的一个 php 脚本中,我试图获取服务器文档根目录,但我得到的值不完整,它只是缺少域文件夹。我相信这是由于共享托管或其他原因。

这是我目前使用的方式:

$root = realpath($_SERVER["DOCUMENT_ROOT"]);

我得到的路径是:

/home/content/01/0151247/html

虽然我知道它应该是这样的:

/home/content/01/0151247/html/mydomain

我知道当我将它与 SCRIPT_NAME 进行比较时,我在路径中看到了 mydomain。

希望有人可以指导我。

谢谢你,很抱歉可能在社区里又问了一千次相同的问题,我真的从这里尝试过,到目前为止没有任何帮助。

更新

不幸的是,我不能简单地将我的索引文件与DIR一起使用,因为它是一个 wordpress 设置,我正在处理一个单独的文件夹,其中包含一些 wordpress 功能,但为此我需要一个 document_root。如果那会有所帮助。

更新

显然,以下方式解决了我的问题,也许有一天它会对某人有所帮助:

realpath($_SERVER["SUBDOMAIN_DOCUMENT_ROOT"]);

基本上是因为服务器设置和域配置为子域。

感谢所有参与了的人。

4

3 回答 3

3

在 PHP 5.3 之前,您可以将文件放在您想要其路径的目录中并定义一个常量:

define('ROOT_DIR', dirname( __FILE__ ));

在 5.3 之后,您可以执行以下操作:

define('ROOT_DIR', __DIR__);

想法是这将在config.php每次应用程序运行时都包含在内。

魔术常数文档

于 2011-12-05T22:08:36.720 回答
1

更新

在配置文件中,您只需附加DOCUMENT_ROOT变量:

$_SERVER['DOCUMENT_ROOT'] = $_SERVER['DOCUMENT_ROOT'] . '/mydomain';

这应该会为您解决。

旧解决方案

DOCUMENT_ROOT是服务器设置的环境变量。因此,如果这是在共享主机上,则无法更改。另一种方法是为其设置自己的常量,因此在config页面中包含的类型文件中,您可以执行以下操作:

define('DOCUMENT_ROOT', $_SERVER['DOCUMENT_ROOT'] . '/mydomain');

然后只需使用该常量代替$_SERVER['DOCUMENT_ROOT']. 另一种选择是联系您的主机并询问它,也许这是他们的疏忽,他们会修复它。

编辑

可能使用__DIR__其他人发布的更好的方法,因为DOCUMENT_ROOT可以设置为不同的项目,至少__DIR__每次都应该得到一个准确的目录。

于 2011-12-05T22:07:49.303 回答
0

就个人而言,要在 PHP 中获取文件夹的根目录,我在我的索引文件中使用它:

define('ROOT', dirname(__FILE__));     // __DIR__ will work under PHP 5.3
于 2011-12-05T22:08:01.903 回答