2013-01-21 191 views
0

當我包含這樣的文件:include("/testsitedir/include/subdir/inc.php");testsitedir文件夾中名爲this.php的文件,我得到典型的failed to open stream: No such file or directory in ...\testsitedir\this.php錯誤。包括vs定位路徑

但是,當我編寫一個簡單的HTML定位標記時:<a href="/testsitedir/include/subdir/inc.php">Test Link</a>(URL與include的相同)瀏覽器自動爲我解析URL,並知道/表示我的網站根目錄。

那麼,我可以如何讓我的包含方式以HTML定位標記所用的相同方式來解析URL?

爲了更好地理解,下面是我正在嘗試做的事情。我有一個頭文件位於網站根目錄內名爲content的子目錄中。我想弄清楚如何使用相同的URL在每個文件上包含標題。我的方法是隻使用頭文件的絕對URL。這成爲一個問題的原因是因爲我想用一個CONSTANT來隨時更改網站的根目錄。此外,該網站的根目錄並不總是服務器的根目錄。因此,當我想將站點放在子目錄www.example.com/view/site/siteroot/的服務器上時,我會將常量SITE_ROOT定義爲/view/site/siteroot,幷包含使用include(SITE_ROOT."/includes/file.php);的所有文件。但是,include不能將/正向識別爲站點根分隔符。我打算使用實際的網站名稱,但出於安全原因,我不想啓用url_include

回答

1

在PHP中使用定義的DOCUMENT_ROOT變量:

include($_SERVER['DOCUMENT_ROOT'] . "/testsitedir/include/subdir/inc.php"); 

the docs變量包含:

在其下當前腳本是 執行,如在服務器的配置中定義的文檔根目錄文件。

+0

嗯,我不覺得愚蠢。謝謝哥們。這似乎奏效了! – cbronson

+0

@cbronson'$ _SERVER'變量是相當難以捉摸的,除非你被顯示,所以不要擔心! –