我正在尝试从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
语句,所以我知道它正在被加载。
知道如何访问这些变量吗?
答案 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;