使用常量来包含文件

时间:2014-01-02 02:16:21

标签: php path constants

我有这样的东西,但它不起作用,似乎因为显示了servername而无法正常工作。

DEFINE("APP_FOLDER", "website");
DEFINE("MODULES_DIR", $_SERVER["SERVER_NAME"].APP_FOLDER."/modules");

include_once(MODULES_DIR."/class-ViewRender.php");

它显示错误:*警告:include_once(localhost / website / modules / class-ViewRender.php):无法打开流。*

我还想要的是我可以拥有这样的文件

myappfolder / pages / users.php - >应成功包含文件类-ViewRender.php

myappfolder / pages / administration / administrativeusers.php - >这里也应成功包含文件类-ViewRender.php。

如何在每个php文件中实现这一点,包括相同的config.php?

2 个答案:

答案 0 :(得分:1)

这是初学者在PHP面临的一个主要问题,我受到了很多影响。解决问题的最佳方法是使用'File system_path'

例如。

$white_list = array('127.0.0.1', '127.0.0.0','::1');

defined('DS')? null:define('DS', DIRECTORY_SEPARATOR);

if(!in_array($_SERVER['REMOTE_ADDR'], $white_list)){
    // Remote SERVER
    define('SITE_ROOT',       DS.'home'.DS.'some_name'.DS.'public_html'.DS.'your_web_root_folder_name');
}
else{
    //localhost
    define('SITE_ROOT', 'c:'.DS.'wamp'.DS.'www'.DS.'your_web_root_folder_name');
}

然后你可以简单地在PHP文件中使用SERVER_ROOT常量。

答案 1 :(得分:0)

好的,我想我已经解决了。

诀窍是在主文件夹中有一个config.php文件,我的意思是,它是Web应用程序的根目录。

然后你可以在那里声明常量,如CLASSES_FOLDER,“/ modules / classes”

然后,只要您有下一行,请求PHP脚本的深度无关紧要:

//Superdeep.php
include_once("../../../../../config.php");

你将能够使用config.php中的任何内容。

有没有办法避免必须猜测所有必须放置的“../”才能使其正常工作?我还不知道......