2014-06-11 53 views
-1

我有一個共享服務器上的cPanel賬戶,我使用context_document_root,因爲它試圖從實際服務器的include_path拉文件有一個問題,而不是我的具體用戶帳戶包含路徑。我需要弄清楚發生了什麼事情。PHP包含路徑錯誤 - 從服務器拉include路徑,而不是用戶的路徑

以下是錯誤:

Warning: include_once(): Failed opening '/WMS/configuration.php' for inclusion (include_path='.:/usr/local/lib/php') in /home/kylej/public_html/index.php on line 4 

該文件位於的public_html/WMS/configuration.php文件,是居然有。

在我的htaccess中:我已經添加了RewriteBase /~kylej/,我甚至嘗試在其根目錄下創建一個php.ini文件,其中包含ini_set('include_path', '/home/kylej/public_html');

有人可以幫忙嗎?

裏面的PHP文件,這裏是我的有:include_once($_SERVER['CONTEXT_DOCUMENT_ROOT'] .'/WMS/configuration.php');

回答

0

顯然,$_SERVER['CONTEXT_DOCUMENT_ROOT']解析爲一個null /空值。這就是爲什麼你不應該添加外部依賴到你的應用程序。

使用相對路徑__DIR__替代,從而保持您的應用程序的可移植性。

include_once __DIR__ . '/WMS/configuration.php'; 

/home/kylej/public_html/index.php__DIR__將解析爲/home/kylej/public_html

此外,啓用適當的錯誤報告和顯示會提醒你一個事實,即$_SERVER['CONTEXT_DOCUMENT_ROOT']沒有設置。

+0

在這一點上的問題是,如果我使用這個站點範圍;如果我需要在另一個文件夾內使用絕對路徑幷包含根目錄中的文件,如何使它始終與/ home/kylej/public_html相等。 – user3665571