PHP:包含或必需文件中未定义变量

PHP:包含或必需文件中未定义变量,php,variables,undefined,include-path,Php,Variables,Undefined,Include Path,嗨,我有一个变量未设置的问题。如果我使用相对路径,它正常工作,但是当使用绝对路径时,php说它没有设置 <?php define('DS', DIRECTORY_SEPARATOR); define('SITE_ROOT', 'G:' . DS . 'htdocs' . DS . 'www'); define('LAYOUT_PATH', SITE_ROOT . DS . 'layout'); require('function.php'); $user = new User()

嗨,我有一个变量未设置的问题。如果我使用相对路径,它正常工作,但是当使用绝对路径时,php说它没有设置

<?php
define('DS', DIRECTORY_SEPARATOR);
define('SITE_ROOT', 'G:' . DS . 'htdocs' . DS . 'www');
define('LAYOUT_PATH', SITE_ROOT . DS . 'layout');
require('function.php');    

$user = new User();
$user->set_username('johndoe');

require_layout_template('header.php');
?>
上述错误的结果是:
注意:未定义变量:G:\htdocs\www\layout\header.php中的用户

但是,如果我使用相对路径,一切都可以

我在windows环境中的localhost上运行,在PHP版本5.3.5中运行

更新: 是我的错,我没有包括
require\u layout\u模板
。我将此函数包含在
function.php
中,以处理所需的必要细节

<?php
    //function.php
    function require_layout_template($template) {
        global $user; // added this to solve the problem.
        require(LAYOUT_PATH . DS . $template);
    }
?>

我已经为变量
$user
添加了必要的全局变量


谢谢@strkol的建议

一般来说,最好的方法是在用户直接调用的站点上定义根目录。所以所有的索引站点,应该由用户直接寻址,但不在其他的.php文件中,包括或类等等

index.php:
$rootdir = '../';

require_once($rootdir.'dir/other.php);

变量的作用域不取决于文件包含的是绝对路径还是相对路径,因此您的问题出在头文件的其他地方。php尝试执行echo$_服务器['REQUEST_URI'];你能在header.php中添加这一行吗?尝试这两种情况并发布输出:
print\r(get\u included\u files())@strkol我想我找到了罪犯。谢谢你的主意。恒量也很有用。
index.php:
$rootdir = '../';

require_once($rootdir.'dir/other.php);