相对包括比较

时间:2014-08-02 18:11:25

标签: php include

我现在在互联网上搜索了几天如何从网站根目录中包含文件。现在我通过制作一个位于我网站根目录的全局配置文件找到了一个解决方案,并将其包含在需要它的每个文件中。

<?php define('SITE_ROOT', dirname(__FILE__));

解决了我的大部分内容的问题但是当需要在运行的包含文件中包含config.php时它失败了。现在我写了一个简单的PHP脚本来处理它。

$i = 0;
$path = '';
$file = "config.php";
while($i != true){
 if(file_exists($path . $file)){
    include_once($path . $file);
    $i = true;
 }else{
    $path .= '../';
 }
}

我把它用于搜索我网站上的文件。现在我的问题是有一个更好的解决方案或这是不好的做法。

在评论时请记住我还是初学程序员

感谢

1 个答案:

答案 0 :(得分:1)

查找explode()$_SERVER['PHP_SELF']。使用后者,您将获得从根到您正在“执行”的脚本的路径。使用explode(),您可以按单位剪切路径,这将为您提供实际脚本所在位置的深度(加1)。所以,如果你想用str_repeat("../", ...)创建相对路径,你就在那里!

示例:$_SERVER['PHP_SELF']返回:

/misc/tests/test.php

然后

$depth = explode("/", dirname($_SERVER['PHP_SELF']));

将为您提供元素列表。 root的路径是:

$toroot = str_repeat("../", count($depth) - 1);