2013-05-18 59 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了解该引导技术的演示。