2013-08-21 21 views
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的」的文件夾中。 可以避免硬編碼這個目錄名嗎?

+0

有一點你需要決定「我有多少信息才能讓我的程序找到正確的文件」。如果你移動文件,但它總是有相同的名稱,我想你可以「搜索整個樹的信息」。但是,在某些地方,你需要在地面上放置一個樁。我想知道如果你沒有注意到這個... – Floris

+0

如果你使用的是PHP 5.3或更高版本(你應該是),'dirname(__ FILE __)'可以用'__DIR__'代替。 – Spudley

+0

嗨@弗洛里斯,我來自ASP.NET,其中每個文件都可以直接訪問配置文件(web.config),因此以php工作的方式包含文件對我來說是新的。這就是我問的原因。你可以把它看作是放置賭注的最佳方式。 – mjsr

回答

0

你能改變它嗎?

$root = realpath($_SERVER["DOCUMENT_ROOT"]) . "/mysite/"; 
include $root ."config.php"; 
相關問題