在单独的PHP脚本中访问全局变量?

时间:2012-05-18 06:50:32

标签: php include scope global-variables

我正在尝试从PHP脚本导入一些变量。这似乎很简单,但我无法让它发挥作用。

该脚本包含一些全局变量:

$server_hostname = "localhost";
$server_database = "kimai";
$server_username = "root";
$server_password = "";
$server_conn     = "mysql";
$server_type     = "";
$server_prefix   = "kimai_";
$language        = "en";
$password_salt   = "7c0wFhYHHnK5hJsNI9Coo";

然后在我的脚本中,我想访问这些变量,所以我已经完成了:

require_once 'includes/autoconf.php';   
var_dump($server_hostname);

但这只是输出NULL。我也试过了:

require_once 'includes/autoconf.php';

global $server_hostname;    
var_dump($server_hostname);

但仍无效。

我在“autoconf.php”文件中添加了一些echo语句,所以我知道它正在被加载。

知道如何访问这些变量吗?

7 个答案:

答案 0 :(得分:2)

您必须首先将变量定义为全局变量:

global $server_hostname;
$server_hostname = "localhost";

答案 1 :(得分:2)

事实证明该文件已包含在应用程序的其他位置,所以当我调用require_once时,该文件根本没有被包含。我将其更改为require,现在可以正常工作。

答案 2 :(得分:1)

可能文件未正确包含在内。

require_once 'includes/autoconf.php';   

检查包含autoconf.php

的当前工作目录

试试这个

if (file_exists('includes/autoconf.php')) require_once 'includes/autoconf.php';
else echo 'File not exists';

检查出来。

答案 3 :(得分:0)

使用常量怎么样?

定义( “server_hostname”, “本地主机”); 定义( “server_hostname”, “本地主机”);

答案 4 :(得分:0)

如果你包含文件并且变量是纯文本的,而不是在函数/类中,它可以在没有全局的情况下工作

转到你的php.ini并将display_errors = On和错误放到E_ALL,这样你就会看到哪个是正确的原因

答案 5 :(得分:0)

这是邪恶的,但它可能会完成工作。

<? //PHP 5.4+
\call_user_func(static function(){
    $globals = \get_defined_vars();
    include 'includes/autoconf.php';
    $newVars = \array_diff_key($globals, \get_defined_vars());
    foreach($newVars as $name => $value){
        \define($name, $value);
    }
});
//Variables defined in file are now constants!
?>

答案 6 :(得分:0)

使用和更正全局变量的更好方法是先为变量赋值,然后再声明全局变量。 这是:

$server_hostname = "localhost";
global $server_hostname;