2011-12-29 82 views
1

我是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'; 

是否有克服這種&使用共同的(相對)路徑config.php可以在ENY文件夾路徑中使用的方法項目?

在php項目中包含類的常見/最佳實踐是什麼?

+0

您的工作目錄是Public_HTML文件夾嗎?還是SystemRoot? (您的索引文件在哪裏?) – James 2011-12-29 03:44:19

+0

@James index.php位於Public_HTML的系統根目錄和其他網頁中 – Nalaka526 2011-12-29 04:08:27

+0

然後,如果SystemRoom是您的domain.com/目錄,則包含的所有內容都是使用相對路徑「/包括/路徑」。這樣,包含的路徑從您的SystemRoom開始。因此,如果你的包含文件在「SystemRoot/resources/config.php」中,你只需要include_once(「/ resources/config.php」);在任何文件中。 (換句話說,只需以「/」開頭的路徑) – James 2011-12-29 04:34:23

回答

2

你可以路由一切到你的index.php

然後定義一些常數。然後路由到index.php的Evrything將可以訪問這些內容。

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

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

我已經做了相當多你過去做了什麼,但我require() s的不同的做法:

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'); 
3

chdir($_SERVER['DOCUMENT_ROOT']);啓動腳本。從那裏你所有的include和任何其他文件功能,如file_exists,fopen等將從您的網站的根目錄(通常public_html)工作。

+0

這就是我要建議如果你還沒有在根目錄下工作。 – James 2011-12-29 03:48:52

+0

@kolink <?php echo $ _SERVER ['DOCUMENT_ROOT']?>給出'D:/ workspace',它是SystemRoot Directory的父目錄。是錯誤的(與我的PHP配置)? – Nalaka526 2011-12-29 04:56:10

+0

你使用的是Windows服務器嗎? – James 2011-12-29 16:35:10

相關問題