【发布时间】:2012-06-19 06:15:54
【问题描述】:
我想将包含文件identity.php 中定义的变量传递给父文件,我将其称为parent.php。当我通过它的相对路径包含 identity.php 时,该变量可用于 parent.php 文件。当我通过它的绝对路径(到应用程序根目录)包含 identity.php 时,它不起作用。这是为什么呢?
文件:identity.php
$g_groupid = 2;
文件:parent.php
include('absolute_path_to_identity.php');
echo $g_groupid; //NOTHING!
但是...
文件:parent.php
include('../../identity.php'); //relative path to include file
echo $g_groupid; //echos 2 as expected
我已经通过回显“身份文件包含消息”(来自 identity.php 文件)验证了identity.php 在两种情况下都包含,该消息是显示相对和绝对包括。这种行为的原因可能是什么?
【问题讨论】:
-
启用完整的错误报告。您使用的绝对路径很可能是错误的。
-
我已经回显了绝对路径,它是正确的。我还在包含文件中包含了一个 echo 语句,并且在两种情况下都会回显该消息 - 表明该文件已包含在两个实例中。
-
文件肯定不包括在内。您应该使用
require而不是include来确认 -
@ShaktiSingh 文件包括在内。我在使用 require 时遇到了同样的问题。我将继续使用相对包含 - 因为它有效! - 但知道为什么它在后一种情况下不起作用会很有用。
-
Globals are bad。设计应该在函数和类中更改为encapsulate the code,使这个问题没有意义。
标签: php variables include scope filepath