2011-04-14 130 views
0

我有以下的包括文件..定义绝对路径的文件

require_once ("config.php"); 
require_once ("functions.php"); 
require_once ("session.php"); 

我想定义为我的包括文件的绝对路径。我试着用下面的代码,但没有运气..

你可以请帮忙定义一个合适的绝对路径,以便require_once如预期。

defined('DS') ? null : define('DS',DIRECTORY_SEPARATOR); 
    defined('SITE_ROOT') ? null: define('SITE_ROOT',DS.'PHP_Files'. DS . 'phpsandbox'. DS.'my_mat'. DS.'my_test'); 
    defined('LIB_PATH')?null:define('LIB_PATH',SITE_ROOT.DS.'includes'); 

    require_once(LIB_PATH.DS."config.php"); 
    require_once(LIB_PATH.DS."functions.php"); 
    require_once(LIB_PATH.DS."session.php"); 

这些3包括在我的系统文件存储在j:\ PHP_Files \ phpsandbox \ my_mat \ my_test \包括。

在此先感谢!

+0

可能重复[在PHP中创建绝对路径的最佳方法? (见内部列出3种方法)](http://stackoverflow.com/questions/2893088/best-method-for-creating-absolute-path-in-php-see-3-methods-listed-inside) – ircmaxell 2011-04-14 15:21:01

+1

此外,不要滥用这样的三元运算符。如果你必须做简短的语法,用'OR'代替:'defined('DS')OR define('DS',DIRECTORY_SEPARATOR);' – ircmaxell 2011-04-14 15:29:47

+0

我是新来的php。所以我理解你的意思并不困难。如果你可以详细解释,这将是非常好的。我正在检查是否定义了常数DS。如果它没有定义,我正在定义它..如果有什么不对的地方,我会很乐意学习 – satya 2011-04-14 15:34:43

回答

0

您需要realpath功能。此外,您可以获得get_included_files包含的所有文件,该函数返回函数被调用时包含的文件的绝对路径数组。

defined('DS') or define('DS',DIRECTORY_SEPARATOR); 
$disk_label = ''; 
if (PHP_OS == 'WINNT') { 
    if (FALSE !== ($pos = strpos(__FILE__, ':'))) { 
     $disk_label = substr(__FILE__, 0,$pos+1); 
    } 
} 
defined('SITE_ROOT') or define('SITE_ROOT', $disk_label.DS.'PHP_Files'. DS . 'phpsandbox'. DS.'my_mat'. DS.'my_test'); 
defined('LIB_PATH') or define('LIB_PATH',SITE_ROOT.DS.'includes'); 

require_once(LIB_PATH.DS."config.php"); 
require_once(LIB_PATH.DS."functions.php"); 
require_once(LIB_PATH.DS."session.php"); 
+0

更新我的答案 – Nemoden 2011-04-14 15:29:23

0

尝试在您的包含路径中包含您的LIB_PATH。

set_include_path(LIB_PATH . DS . PATH_SEPARATOR . get_include_path()); 
0
require_once(dirname(__FILE__).DS."config.php"); 
require_once(dirname(__FILE__).DS."functions.php"); 
require_once(dirname(__FILE__).DS."session.php"); 

检查出来,我觉得这是很好的

1

好了,我知道你在寻找的是实际的系统文件的路径。为了让您能呼应

dirname(__FILE__); 

您可以在任何你想要的文件,做到这一点,它会显示路径相对于你的文件系统中的文件。对于我来说,是这样的:

/home2/myusername/public_html/project_name/includes/config.php 

所以,如果你有兴趣在“PROJECT_NAME”文件夹,你应该有这样的事情:

defined("SITE_ROOT") ? null : define("SITE_ROOT", DS . "home2" . DS . "myusername" . DS . "public_html" . DS . "project_name"); 

然后,如果你正在寻找的“包括”文件夹这将是你的图书馆你应该有这样的事情:

defined("LIB_PATH") ? null : define("LIB_PATH", SITE_ROOT . DS . "includes"); 

希望这会有所帮助。我有完全相同的问题,这对我有用。

欢呼,Mihai Popa