2015-06-25 60 views
2

爲了安全起見,我試圖將我的配置文件放置在文檔根目錄之上,並試圖在我的本地開發機器(xampp)以及bluehost上執行此操作,並且在兩種情況下都有include_once ($_SERVER['DOCUMENT_ROOT'].'../set/include.php')無法在位於文檔根目錄之上的/set/文件夾中找到我的文件。我已經嘗試了大部分在搜索中出現的選項,但我似乎無法使其工作。我這樣做是爲了安全,但我想知道是否有其他選項,如果它必須包含在webroot中?有什麼我缺少如php.ini修改等?如何使用PHP包含以上根目錄

+1

檢查DOCUMENT_ROOT的值。通常沒有拖尾路徑分隔符。 – mario

+0

'include_once dirname($ _ SERVER ['DOCUMENT_ROOT'])。 '/set/include.php';' - 不妨使它成爲絕對路徑。 –

+0

@mario C:/ xampp/htdocs就是它在家裏顯示的內容。所以技術上C:/ xampp/htdocs /../set/不會把我一個目錄放到/ set /文件夾中嗎? – Habitat

回答

2

我已經通過明確設置路徑來完成此操作 - 即完全限定路徑。這可以在.htaccessphp.ini完成,具體取決於您的設置。然後當你包含php文件時,你不需要指定文件的路徑。

論'的.htaccess'

php_value include_path ".;c:\desiredpath" 

論'的php.ini我的共享服務器」

include_path = ".:/home/username/desiredpath" 
+0

我更喜歡這種方法。欣賞它。 – Habitat

+0

我的php.ini有一個爲unix設置的包含路徑,如「。:/ usr/php/54/usr/lib64:/ usr/php/54/usr/share/pear」。覆蓋這個可以嗎? – Habitat

+0

您可以追加到路徑。 Unix上用冒號分隔路徑,用分號分隔Windows。因此,在你的情況下,路徑是'「。/ usr/php/54/usr/lib64:/ usr/php/54/usr/share/pear:/ usr/php」'或者任何想要添加到結束而不是'/ usr/php'。除非你沒有在上面提到的pear目錄中使用文件 - 在這種情況下,只需要覆蓋(以防備)。 – mseifert

2

基本上我的本地主機,問題就出在這裏:

include_once ($_SERVER['DOCUMENT_ROOT'] . '../set/include.php') 
             ^

它缺少一個斜槓,導致像/htdocs../set/include.php這樣的路徑。

這就是說,你可以使用dirname(),這樣就可以通過一個絕對路徑:

include_once dirname($_SERVER['DOCUMENT_ROOT']) . '/set/include.php'; 
相關問題