2
我想知道如何在不使用相對路徑或直接絕對路徑(硬編碼路徑)的情況下將代碼(配置文件)包含在不同目錄深度的php文件中。 我不喜歡使用下列內容:如何避免在php中對網站根進行硬編碼以包含「配置文件」?
- ../config.php
- ../../config.php
- ../../../config.php
- C:/wamp/www/mysite/config.php
這樣做是爲了避免修改倍數文件時:
- 將文件移動到其他目錄
- 應用程序的根目錄改變
我所做的是把我的配置文件如下:
define("ROOT", dirname(__FILE__));
而在其他文件:
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
include $root ."/mysite/config.php";
你可以看到,我硬編碼我的網站「/ mysite的」的文件夾中。 可以避免硬編碼這個目錄名嗎?
有一點你需要決定「我有多少信息才能讓我的程序找到正確的文件」。如果你移動文件,但它總是有相同的名稱,我想你可以「搜索整個樹的信息」。但是,在某些地方,你需要在地面上放置一個樁。我想知道如果你沒有注意到這個... – Floris
如果你使用的是PHP 5.3或更高版本(你應該是),'dirname(__ FILE __)'可以用'__DIR__'代替。 – Spudley
嗨@弗洛里斯,我來自ASP.NET,其中每個文件都可以直接訪問配置文件(web.config),因此以php工作的方式包含文件對我來說是新的。這就是我問的原因。你可以把它看作是放置賭注的最佳方式。 – mjsr