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

时间:2012-04-06 11:13:33

标签: php variables undefined include-path

嗨我有一个未设置变量的问题。如果我使用RELATIVE路径它会正常工作,但是当使用ABSOLUTE路径时,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');
?>

header.php内:

<?php
//if ( isset($user) ) {
    echo $user->get_username();
//}
?>

以上结果是这个错误: Notice: Undefined variable: user in G:\htdocs\www\layout\header.php

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

我在Windows环境中运行localhost并在PHP 5.3.5版中运行。

更新

我没有包括require_layout_template,这是我的错。我在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的想法。

1 个答案:

答案 0 :(得分:0)

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

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

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