PHP项目中配置文件的相对路径

时间:2011-12-29 03:39:09

标签: php

我是PHP的新手。我正在开发一个新的PHP网站。我的网站文件夹结构如下,

-SystemRoot
    +Code
    +Data_Access
    -Public_HTML
        +css
        +js
        +Templates
    -resources
        config.php

我在资源目录中有一个配置文件,我需要在各种目录中的大多数其他php页面中包含config.php。因此,我必须在不同的页面中指定配置文件的路径,例如

include_once '../resources/config.php';
include_once '../../resources/config.php';

有没有办法克服这个&使用可以在项目中的eny文件夹路径中使用的config.php的公共(相对)路径?

在php项目中包含类的常见/最佳实践是什么?

4 个答案:

答案 0 :(得分:4)

我已经完成了你过去所做的一切,除了我的require()以不同的方式完成:

require_once(str_replace('//','/',dirname(__FILE__).'/') .'../../config.php');

然后我定义了其他可以在整个过程中使用的路径:

// DIRECTORY_SEPARATOR is a PHP pre-defined constant
// (\ for Windows, / for Unix)
defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR);

// Define Views URL path
defined('VIEW_URL') ? null : define('VIEW_URL', '/application/views');

// Define CSS URL path
defined('CSS_URL') ? null : define('CSS_URL', '/public/css');

// Define JavaScripts URL path
defined('JS_URL') ? null : define('JS_URL', '/public/js');

// Define site root
defined('SITE_ROOT') ? null : 
  define('SITE_ROOT', str_replace('//','/',dirname(__FILE__)));

// Define App path as 'application' directory
defined('APP_PATH') ? null : define('APP_PATH', SITE_ROOT.DS.'application');

// Define Includes path as 'application/includes' directory
defined('INC_PATH') ? null : define('INC_PATH', APP_PATH.DS.'includes');

// Define Helpers path as 'application/helpers' directory
defined('HELP_PATH') ? null : define('HELP_PATH', APP_PATH.DS.'helpers');

// Define Controllers path as 'includes/classes' directory
defined('CTLR_PATH') ? null : define('CTLR_PATH', APP_PATH.DS.'controllers');

// Define Models path as 'includes/classes' directory
defined('MOD_PATH') ? null : define('MOD_PATH', APP_PATH.DS.'models');

// Define Views path as 'includes/classes' directory
defined('VIEW_PATH') ? null : define('VIEW_PATH', APP_PATH.DS.'views');

答案 1 :(得分:3)

使用chdir($_SERVER['DOCUMENT_ROOT']);启动您的脚本。在那里,您的所有include和任何其他文件功能(例如file_existsfopen等)都可以在您网站的根目录中运行(通常为public_html)。< / p>

答案 2 :(得分:2)

您可以将所有内容路由到index.php

然后定义一些常量。路由到index.php的Evrything将可以访问这些。

define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME));

define('RESOURCES', SELF . 'resources/');

答案 3 :(得分:0)