$ _SERVER ['DOCUMENT_ROOT']路径不起作用

时间:2010-06-10 18:11:48

标签: php path

我使用文档root来提供无效的绝对路径。如果我回应这条路径,那么结果证明是C:wamp / www / proman / header.php。我给出相对路径它可以正常工作这里有什么问题?

$path = $_SERVER['DOCUMENT_ROOT']."proman/header.php";

我在这里阐述了我的问题:我有2个php文件data_object.php和user.class.php。 user.class.php有一个data_object.php的include语句,它相对于user.class.php。这两个文件在不同的目录层次结构下。 现在,当我想创建一个User()对象时,我必须在不同层次结构的各种文件(如projects.php,links.php)中包含此user.class.php。问题是data_object.php的文件包含的相对路径对于projects.php有效,但是如果我打开links.php,则错误消息说它无法打开user.class.php中的文件data_object.php。 我认为相对包含data_object.php它正在考虑包含user.class.php的文件的路径。 我在多个场景中遇到这样的问题我必须保持我的目录结构,但必须找到一种方法来处理嵌套包含。我目前正在WAMP服务器上运行,但在完成后我必须在域上托管解决方案。请帮忙

2 个答案:

答案 0 :(得分:6)

由于这是一个服务器变量,您可能会或可能不会看到它,具体取决于您正在运行的Web服务器(尤其是IIS),或者某些配置是否奇怪。

解决此问题的一种方法是设置变量。

$_SERVER['DOCUMENT_ROOT'] = "C:/some/absolute/path";
// or, if you put this code in a file that's in your document root: 
$_SERVER['DOCUMENT_ROOT'] = dirname(__FILE__);

然后,当您需要验证文档根目录时,可以require()此文件,或使用auto_prepend_file php.ini选项自动包含该文件。

如果您实际上是在尝试创建网址,那么您只需指定一个绝对网址 - /proman/header.php或相对网址 - ../proman/header.php

答案 1 :(得分:5)

根据我的经验,$_SERVER['DOCUMENT_ROOT']不包括尾部斜杠。尝试:

$path = $_SERVER['DOCUMENT_ROOT'].'/proman/header.php';