我知道这个主题已在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包含在哪里?
答案 0 :(得分:3)
require.php
中的你应该使用
require dirname(__FILE__). "/assign.php";
通过提供动态生成的完整路径,这将包括正确的文件。
答案 1 :(得分:2)
您可以定义一个全局常量并使用它。
define('ROOT_PATH', rtrim(dirname(__FILE__), "\\/"));
require ROOT_PATH . '/file.php';