2013-05-21 34 views
0

我有一个包含这样PHP的包括未命中变量

conf.php

$var1='some value'; 
$var2='some value'; 
$var3='some value'; 

我包括在另一文件中的函数内的本文件中像这样

定义变量的文件conf.phpfuncs.php

function myFunction($value1 ,$value2){ 
include '../includes/conf.php'; 
echo $var1; //<= this give and empty string for all vars in conf.php 
} 

我似乎无法找出问题

+3

如果更换'和'require' include'会发生什么? – andrewsi

+4

^并确保打开错误报告,最有可能'conf.php'不包括在内。 – doublesharp

+1

以这种方式使用包含是非常糟糕的做法。 – Spudley

回答

0

我使用$ GLOBALS变量解决了这个问题,所以在我的功能,我只需要做

function myFunction($value1 ,$value2){ 
echo $GLOBALS['value1']; //<= this works well 
} 
0

您没有定义对根目录的引用。 Add

__DIR__ 

它应该可以解决您的问题。

include __DIR__ . '/../includes/conf.php'; 

如果不工作: 我可能是错误的,但你可能必须声明调用函数的范围内,全局的变量(在这种情况下,“myFunction的”)来访问它们。 否则我唯一的解释是include路径是不正确

function myfunction(value1, value2){ 
    include __DIR__ . '/../includes/conf.php'; 
    global $var1; 
    echo $var1; 
} 

希望它能帮助。

+0

我必须同意@dudewad,你的函数正在访问一个局部范围的变量,但在函数内声明为全局函数将访问全局作用域变量 – BParker

0

是不是有理由让这些变量定义为常量?如果这些价值永远不会改变,并且你不希望他们永远不会改变,我会强烈推荐它。 (看到,因为这是一个配置文件。) http://php.net/manual/en/language.constants.php

否则我会看看是否被包括在该文件实际上是加载并查看是否变量被本地引用,您可能需要变量范围更改为全局的变量作用域可能只是针对那个函数。 http://php.net/manual/en/language.variables.scope.php