2011-09-26 88 views
0

我目前使用下面的代碼,包括在我的網頁文件:要求的文件,包括可變

require_once $_SERVER['DOCUMENT_ROOT'] . '/include/file.php'; 

不過,我現在已經編輯我的系統,所以我輸入的URL到根目錄中的數據文件,該文件使我的網站的其他部分功能,並允許我使用不同的目錄。

簡而言之,我在網站上使用了一個啓動頁面,其中根目錄是/目錄而不是根目錄,因此我的數據文件中的URL是http://www.domain.com/directory

所以,我需要解決的是如何在目錄使用變量從包含URL

所以$_SERVER['DOCUMENT_ROOT']變得無關緊要,因爲我需要抓住從數據中的數據文件,指出這行數據文件中的變量不在根中了。

它需要是這樣的:

require_once (variable from file a few directories back) + absolute path to file; 

我想這行代碼是面向未來也一樣,如果我需要建立使用不同的目錄,然後在根網站。

我希望有道理!

+0

唯一有意義的是有兩個不同的變量;分開您的基礎URL設置和本地文檔根目錄。 –

+0

不確定你在問什麼。現在file.php在/directory/include/file.php中,還是仍在/include/file.php?你能給我們一些你當前目錄結構的真實例子,file.php在哪裏,這個配置變量包含什麼? – jwegner

+0

感謝您的回覆。但是,我從一個php文件控制整個系統,我想保持這種方式。我知道可以使用PHP來實現這一點 - 我只需要一個知道PHP的人來幫助我使用這個代碼! :) – user965903

回答

2

創建一個SITE_ROOT並使用它。這樣,它將適用於任何目錄更改。

define('SITE_BASE', '/directory/'); 
define('SITE_ROOT', $_SERVER['DOCUMENT_ROOT'] . SITE_BASE); 

然後可以使用SITE_BASE創建您的URI:

<a href="<?php echo SITE_BASE ?>subdir/">link</a> 

SITE_ROOT訪問系統上的文件:

require_once SITE_ROOT . 'include/file.php'; 
+0

這聽起來像是一個完美的解決方案!我將在哪裏包含SITE_ROOT的數據?非常感謝! – user965903

+0

它需要成爲在每個頁面上運行的第一行代碼之一。所以,不管怎樣,這對你的特定應用程序來說最適合。 – webbiedave

+0

我明白了。非常感謝你。我現在就給它一個bash。再次感謝。 – user965903

0

你有沒有考慮在php.ini文件中設置include_path?例如,我自己的php.ini文件有include_path = ".:/path/to/web/root",這使我不必擔心我的文件在包含它們時的位置。

對於您的情況,您希望將其設置爲include_path = ".:/path/to/web/root/directory"。如果您不知道Web根目錄的路徑,只需運行echo $_SERVER['DOCUMENT_ROOT'];即可找到它。

該解決方案是「面向未來的」,因爲您只需要更改該值,並且所有內容都已到位。

+0

謝謝你的迴應,Kolink。我沒有使用php.ini文件。我現在不是PHP專家(我正在使用一個.php文件來控制我的所有頁面,聽起來好像它能解決我的問題,但我會進一步研究這個問題,非常感謝。 – user965903