0

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

我有assign.php:

$a=1;

要求.php:

require "assign.php";

和 echo.php:

require "require.php"
echo $a;

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

/文件夹/echo.php:

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

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

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

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

也不会工作,因为代码没有被包含,而是被编译,并且由于 $a 不是全局的,它是 undefiend 的。

有人告诉我,真的不推荐使用全局变量。

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

解决办法是什么?无论 require.php 来自何处,我如何确保 require.php 始终为 assign.php 找到正确的路径?

4

2 回答 2

5

require.php你应该使用

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

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

于 2012-12-01T14:36:57.450 回答
2

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

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

require ROOT_PATH . '/file.php';
于 2012-12-01T14:22:19.817 回答