2013-05-18 90 views
1

我正在開發一個項目,我無法包含這些文件。在PHP中包含配置文件

我的文件夾結構:

--Myproject 
-----Config 
----------config.php 
-----Includes 
----------Images 
---------------image.jpg 
----------CSS 
---------------test.css 
----------JS 
---------------test.js 
-----Modules 
----------Home 
---------------index.php 
----------Contact 
----------MyPage 

enter image description here

我試圖訪問配置文件是配置/ config.php文件裏面在我的模塊/主頁/ index.php文件

但我無法包含配置文件?

我想:

1. 
define("ROOT", __DIR__ ."/"); 

2. 
define("HTTP", ($_SERVER["HTTP_HOST"] == "localhost") 
    ? "http://localhost/myproject/" 
    : "http://your_site_name.com/" 
); 
<img src="<?php print HTTP; ?>images/banner.gif"> 

3. 
define('PROJECT_ROOT', getcwd()); 

4. 
$_SERVER['DOCUMENT_ROOT']; 

Ref: [link][2] 

5. 
echo $_SERVER['SERVER_NAME']; 

我又能怎麼樣一個config.php中是出方的文件夾結構,但我的項目裏面?

+1

創建文件路徑字符串時,應始終使用PHP內置常量DIRECTORY_SEPARATOR。 –

+1

一旦文件被鏈接,我將使用各種內置函數。 – TomPHP

回答

1

您可以使用absolute path這可能是/Myproject/Config/config.php或由上級文件夾瀏覽,然後將你需要的文件重置目錄../../Config/config.php

所以,你可以管理與

include('../../Config/config.php'); 

至於包括規定在includedocumentation

If a path is defined — whether absolute (starting with a drive letter or \ on Windows, or/on Unix/Linux systems) or relative to the current directory (starting with . or ..) — the include_path will be ignored altogether. For example, if a filename begins with ../, the parser will look in the parent directory to find the requested file.

編輯

讓我們來分析包含路徑。我們其實在Modules/Home/文件夾中。 te達到根級並可以進入Config文件夾我們需要走兩級上級,我們可以通過爲每個級別做../來做到這一點,所以在我們的案例../../。現在我們在root目錄中,我們可以瀏覽Config/並獲取我們期望的文件config.php。現在混合所有toghter將會有../../Config/config.php

+2

當我使用include('../../ Config/config.php');我收到以下錯誤警告:include(../../ Confg/config.php)[function.include]:無法打開流:沒有這樣的文件或目錄在E:\ wamp \ www \ myproject \ Modules \首頁\ index.php在第2行 – TomPHP

+2

如果我重置目錄,它會變得複雜,因爲我需要給每個模塊的配置:( – TomPHP

+2

@Tomphp包括我在這裏顯示的方式不會重置您的目錄,你將在與以前相同的目錄,你只需要包含文件 – Fabio

1

我認爲這將工作:

include '../../Config/config.php'; 
+2

沒有錯誤:Warning:include(../../ Config/config.php)[function.include]:未能打開流:沒有這樣的文件或目錄在E:\ wamp \ www \ myproject \ Modules \ Home \ index.php上 – TomPHP

1

什麼你可以做的,就是包括以下行到你的index.php文件路徑:

define("LOCAL_PATH_MODULES", dirname(__DIR__)); 
define("LOCAL_PATH_APP", dirname(LOCAL_PATH_MODULES)); 
define("LOCAL_PATH_CONFIG", MODULES_PATH . DIRECTORY_SEPARATOR . 'config'); 
require LOCAL_PATH_CONFIG . DIRECTORY_SEPARATOR . 'config.php'; 

什麼你應該這樣做,是在您的Modules文件夾中放入一個名爲bootstrap.php的文件。

代替上面的代碼,將以下代碼添加到您的索引文件中。

define("LOCAL_PATH_BOOTSTRAP", dirname(__DIR__)); 
require dirname(__DIR__) . 'bootstrap.php'; 

現在,這種添加到您的引導文件:

// ----------------------------------------------------------------------- 
// DEFINE SEPERATOR ALIASES 
// ----------------------------------------------------------------------- 
define("URL_SEPARATOR", '/'); 
define("DS", DIRECTORY_SEPARATOR); 
define("PS", PATH_SEPARATOR); 
define("US", URL_SEPARATOR); 

// ----------------------------------------------------------------------- 
// DEFINE ROOT PATHS 
// ----------------------------------------------------------------------- 
define("RELATIVE_PATH_ROOT", ''); 
define("LOCAL_PATH_ROOT", $_SERVER["DOCUMENT_ROOT"]); 
define("HTTP_PATH_ROOT", 
     isset($_SERVER["HTTP_HOST"]) ? 
     $_SERVER["HTTP_HOST"] : (
     isset($_SERVER["SERVER_NAME"]) ? 
     $_SERVER["SERVER_NAME"] : '_UNKNOWN_')); 

// ----------------------------------------------------------------------- 
// DEFINE RELATIVE PATHS 
// ----------------------------------------------------------------------- 
define("RELATIVE_PATH_APP", dirname(LOCAL_PATH_BOOTSTRAP)); 
define("RELATIVE_PATH_LIBRARY", RELATIVE_PATH_APP . DS . 'Lib'); 
define("RELATIVE_PATH_ADMIN", RELATIVE_PATH_APP . DS . 'Admin'); 
define("RELATIVE_PATH_CONFIG", RELATIVE_PATH_APP . DS . 'Config'); 
define("RELATIVE_PATH_MODULES", RELATIVE_PATH_APP . DS . 'Modules'); 
define("RELATIVE_PATH_ASSET", RELATIVE_PATH_APP . DS . 'Includes'); 
define("RELATIVE_PATH_ASSET_IMG", RELATIVE_PATH_ASSET . DS . 'Images'); 
define("RELATIVE_PATH_ASSET_CSS", RELATIVE_PATH_ASSET . DS . 'CSS'); 
define("RELATIVE_PATH_ASSET_JS", RELATIVE_PATH_ASSET . DS . 'JS'); 

// ----------------------------------------------------------------------- 
// DEFINE LOCAL PATHS 
// ----------------------------------------------------------------------- 
define("LOCAL_PATH_APP", LOCAL_PATH_ROOT . RELATIVE_PATH_APP); 
define("LOCAL_PATH_LIBRARY", LOCAL_PATH_ROOT . RELATIVE_PATH_LIBRARY); 
define("LOCAL_PATH_ADMIN", LOCAL_PATH_ROOT . RELATIVE_PATH_ADMIN); 
define("LOCAL_PATH_CONFIG", LOCAL_PATH_ROOT . RELATIVE_PATH_CONFIG); 
define("LOCAL_PATH_MODULES", LOCAL_PATH_ROOT . RELATIVE_PATH_MODULES); 
define("LOCAL_PATH_ASSET", LOCAL_PATH_ROOT . RELATIVE_PATH_ASSET); 
define("LOCAL_PATH_ASSET_IMG", LOCAL_PATH_ROOT . RELATIVE_PATH_ASSET_IMG); 
define("LOCAL_PATH_ASSET_CSS", LOCAL_PATH_ROOT . RELATIVE_PATH_ASSET_CSS); 
define("LOCAL_PATH_ASSET_JS", LOCAL_PATH_ROOT . RELATIVE_PATH_ASSET_JS); 

// ----------------------------------------------------------------------- 
// DEFINE URL PATHS 
// ----------------------------------------------------------------------- 

define("HTTP_PATH_APP", HTTP_PATH_ROOT . RELATIVE_PATH_APP); 
define("HTTP_PATH_LIBRARY", false); 
define("HTTP_PATH_ADMIN", false); 
define("HTTP_PATH_CONFIG", false); 
define("HTTP_PATH_MODULES", false); 
define("HTTP_PATH_ASSET", HTTP_PATH_ROOT . RELATIVE_PATH_ASSET); 
define("HTTP_PATH_ASSET_IMG", HTTP_PATH_ROOT . RELATIVE_PATH_ASSET_IMG); 
define("HTTP_PATH_ASSET_CSS", HTTP_PATH_ROOT . RELATIVE_PATH_ASSET_CSS); 
define("HTTP_PATH_ASSET_JS", HTTP_PATH_ROOT . RELATIVE_PATH_ASSET_JS); 

現在,你有兩個在應用程序中最重要的路徑本地和HTTP的變體恆定。

請參閱the PHP PowerTools Boilerplate瞭解該引導技術的演示。