2014-01-15 71 views
5

我正在使用具有以下代碼的php庫:require_once dirname(__FILE__) . '/config.php';require_once dirname(__ FILE__)...的用途是什麼?

從我讀到的,dirname(__FILE__)指向當前目錄。

因此寫require_once 'config.php';難道不容易嗎?

我唯一的猜測是,包括dirname(__FILE__)確保require_once函數使用絕對路徑而不是相對路徑。

+0

這就是理由 - 它保證絕對路徑。其他腳本可以用'chdir()'來改變工作目錄,這會混淆包含路徑。同樣,如果從HTTP以外的其他名稱(例如CLI或cron)調用,include路徑可能會不同,或者工作目錄可能不同。 –

+2

可以使用'__DIR__'來代替... –

+0

同樣'__DIR__'可以從php 5.3或更高版本獲得。來源:[1](http://stackoverflow.com/a/29423749/3258851),[2](http://stackoverflow.com/a/2749423/3258851) –

回答

7

是的,你是對的文件的工作 - dirname(__FILE__)確保require_once功能使用絕對而不是相對路徑。

__FILE__常量代表正在運行的腳本。它將返回正在運行的腳本的完整路徑和文件名。

例如,如果一個名爲database.init.php腳本,從任何地方包括在文件系統中要包括腳本database.class.php,其中規定在同一目錄下,你可以使用:

require_once dirname(__FILE__) . '/database.class.php'; 
1

一個例子:

如果您的文件inlcuded然後某處默認情況下它會開始從包括你的文件的路徑搜索。在這種情況下,需要將不旁邊,是您的文件

相關問題