PHP:使用绝对路径在include/require文件中定义的变量不可访问

PHP:使用绝对路径在include/require文件中定义的变量不可访问,php,include,require,absolute-path,Php,Include,Require,Absolute Path,我发现很难访问包含文件中定义的变量 我的include文件存在于根目录中,它有一个变量$x: localhost/dir\u name/include.php 我将include.php文件包含在子目录中的file.php中: localhost/dir\u name/sub\u directory/file.php 但是每次file.php都会给出未定义变量$x的错误 奇怪的是,当我使用相对路径包含include.php时,它工作得非常好。像这样: include'../include.php

我发现很难访问包含文件中定义的变量

我的include文件存在于根目录中,它有一个变量
$x

localhost/dir\u name/include.php

我将
include.php
文件包含在子目录中的
file.php
中:

localhost/dir\u name/sub\u directory/file.php

但是每次file.php都会给出
未定义变量$x的错误

奇怪的是,当我使用相对路径包含
include.php
时,它工作得非常好。像这样:

include'../include.php'

此外,当使用realpath($\u SERVER['DOCUMENT\u ROOT'])时,它也可以工作。
。像这样:

include$\u SERVER['DOCUMENT\u ROOT'].\dir\u name\include.php'

但它永远不适用于绝对路径。我还尝试将变量设置为全局变量,但没有帮到我,而且
include.php
文件也被正确包含。它没有给我任何其他错误,除了这个未定义的变量

在询问之前,我试着打开这个,但找不到这个错误的答案


我目前正在使用
realpath($\u SERVER[“DOCUMENT\u ROOT”])
作为替代方案

localhost
不是绝对路径。PHP读取计算机上的实际目录,而不是URL中的目录


尝试
echo realpath($\u SERVER[“DOCUMENT\u ROOT”])
你就会明白我的意思。

我尝试过它给我的路径类似于
C:\xampp\htdocs
。。。那么,我必须使用realpath方法还是
dirname(\uuu DIR\uuu)
?我不能包含url路径?@Butterfruit:没错。PHP读取物理目录,而不是URL目录。@SecondRikudo:嗯,include/require也可以与HTTP URL一起使用(如果服务器配置允许的话)–但是结果当然是完全不同的,因为include-via文件系统嵌入了文件的PHP代码,而通过HTTP的include只嵌入URL的输出。@CBroe:我在等别人这么说。1.这是不安全的。不能以这种方式包含PHP代码。3.不要,只是不要。这只是回应你的陈述,“PHP读取物理目录,而不是URL目录”——我不建议这样做。(当然,您可以通过这种方式包含PHP代码——您只需确保它不会被交付它的服务器解析——例如,将其放入
.txt
文件,而不是
.PHP
。同样,我不建议这样做;这只是为了澄清。)