如何包含相对于当前文件而不是父文件的文件?

时间:2012-12-01 14:17:04

标签: php variables

我知道这个主题已在SO中讨论过,但我找不到解决方案。

我有assign.php:

$a=1;

require.php:

require "assign.php";

和echo.php:

require "require.php"
echo $a;

输出1。 问题是,当我想从不同的位置使用“require.php”时,没有重复的文件。例如,

/folder/echo.php:

require "../require.php";
echo $a;

不起作用,因为require.php试图要求/folder/assign.php不存在。

尝试在require.php中使用完整的网址:

require "http://site.com/assign.php";

将无法正常工作,因为代码未被包含但已编译,并且因为$ a不是全局的,所以它是不可取的。

有些人告诉我,不建议使用全局变量。

同样使用文件系统完整路径据说是危险的。

解决方案是什么?我怎样才能确保require.php总能找到assign.php的正确路径,无论require.php包含在哪里?

2 个答案:

答案 0 :(得分:3)

require.php中的

你应该使用

require dirname(__FILE__). "/assign.php";

通过提供动态生成的完整路径,这将包括正确的文件。

答案 1 :(得分:2)

您可以定义一个全局常量并使用它。

define('ROOT_PATH', rtrim(dirname(__FILE__), "\\/"));

require ROOT_PATH . '/file.php';