在常量中正确使用路径文件,以便它可以在任何服务器上使用


correct path files to use in constants so it can be used on any server

我有一个小项目,但我想这适用于任何规模。因为我只有两个类,我认为自动加载可能是多余的,可能不太相关。

我想要实现的是,如果我需要将此转移到另一个服务器或文件夹,它将是兼容的,不需要我在整个网站编辑一堆链接,让它工作。

我有一个常量文件config。php放在classes文件夹
define('CONST_INT_PATH', $_SERVER['DOCUMENT_ROOT']);
define('CONST_ROOT_PATH', 'http://www.mysite.com');
define('CONST_PROJECT_PATH', CONST_ROOT_PATH.'/website');
define("CONST_IMAGE_PATH", CONST_PROJECT_PATH.'/images/');
define("CONST_CLASSES_PATH", CONST_PROJECT_PATH.'/classes/');
define("CONST_INCLUDE_PATH", CONST_PROJECT_PATH.'/includes/');
define("CONST_JS_PATH", CONST_PROJECT_PATH.'/js/');
define("CONST_CSS_PATH", CONST_PROJECT_PATH.'/css/');

项目的根目录var/www等于www.mysite.com网站所在的子文件夹var/www/website等于www.mysite.com/website

说实话我有点迷路了,在某些部分使用CONST_INT_PATH工作得很好,其他地方我必须使用CONST_PROJECT_PATH和使用完整的url路径。我认为后者可能是更好的选择,但我不能肯定。

有没有更好的方法在所有情况下都有效

我现在是这样用的:

include CONST_INCLUDE_PATH.'header.php';
include CONST_INCLUDE_PATH.'footer.php';
<img src="<?php echo CONST_PROJECT_PATH;?>logo.png" />

所以我的问题是哪一个是正确的使用,或者有更好的方法

define('CONST_INT_PATH', $_SERVER['DOCUMENT_ROOT']);
define('CONST_ROOT_PATH', 'http://www.mysite.com');
define('CONST_PROJECT_PATH', CONST_ROOT_PATH.'/website');

我看到包含不加载的奇怪问题,即使如果我回显包含并粘贴在url中,我可以看到它,所以我希望这可能是因为我目前使用的方法是有缺陷的

例如:

include 'includes/header.php';

可以正常工作,但是如果我这样做:

include 'http://www.mywebsite.com/website/includes/header.php';

它不会工作,即使我知道这是正确的路径。所以我猜我需要放弃http://路由并以不同的方式获得路径

好的,所以我得到了它的工作,这种方法可能无法实现我想要的长期,但它似乎是工作。我还不完全明白为什么。

如果我在配置文件中使用:

define('CONST_ROOT_PATH', $_SERVER['REQUEST_URI']);
define('CONST_PROJECT_PATH', dirname(__FILE__));
define("CONST_IMAGE_PATH", CONST_ROOT_PATH.'/images');
define("CONST_CLASSES_PATH", CONST_PROJECT_PATH.'/classes');
define("CONST_INCLUDE_PATH", CONST_PROJECT_PATH.'/includes');
define("CONST_JS_PATH", CONST_ROOT_PATH.'/js');
define("CONST_CSS_PATH", CONST_ROOT_PATH.'/css');

奇怪的是,CONST_PROJECT_PATH对类和包含工作得很好,但由于某种原因,它对js和css文件不起作用。即使所有这些文件夹都在同一个目录下,使用CONST_ROOT_PATH使用$_SERVER['REQUEST_URI']使css和js工作,基本上返回/website而不是var/www/website/

不,我们有配置文件的原因是,当我们在不同的环境中传输代码时,我们只能编辑一个文件。设置Doc根目录,所有的文件路径都应该从这个设置开始。然后,您所需要做的就是根据环境更改doc根设置。

相关文章: