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

Roy*_*Roy 0 php variables

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

我有assign.php:

$a=1;
Run Code Online (Sandbox Code Playgroud)

要求.php:

require "assign.php";
Run Code Online (Sandbox Code Playgroud)

和 echo.php:

require "require.php"
echo $a;
Run Code Online (Sandbox Code Playgroud)

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

/文件夹/echo.php:

require "../require.php";
echo $a;
Run Code Online (Sandbox Code Playgroud)

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

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

require "http://site.com/assign.php";
Run Code Online (Sandbox Code Playgroud)

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

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

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

解决办法是什么?我怎样才能确保 require.php 总是为assign.php 寻找正确的路径,无论 require.php 是从哪里包含的?

jau*_*tte 5

require.php你应该使用

require dirname(__FILE__). "/assign.php";
Run Code Online (Sandbox Code Playgroud)

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