2010-06-10 203 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';