2010-06-10 107 views
3

我正在使用文档根目录来提供无效的绝对路径。如果我回显这条路径,结果是C:wamp/www/proman/header.php。我给它的相对路径很好,这里有什么问题?

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

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

+1

“C:wamp/www/proman/header.php”不正确?你期待'DOCUMENT_ROOT'给你什么? – ceejayoz 2010-06-10 18:25:13

+0

其给予C:wamp/www/ – aeonsleo 2010-06-10 18:39:52

+0

你的问题还不太清楚。您是否期待可以在HTML中使用的路径?如果是这样,'DOCUMENT_ROOT'是错误的使用 - 你想要的东西像'REQUEST_URI'或'SCRIPT_NAME'。 – ceejayoz 2010-06-10 18:26:34

回答

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

5

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

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