在文件config.php中
$_CONFIG = array();
require_once("config.inc.php");
var_dump($_CONFIG);
在文件config.inc.php
中$_CONFIG = array('x' => 'y', ...);
var_dump($_CONFIG);
从命令行运行时,此代码的输出为:
array(15) {
["x"]=>
string(1) "y"
...
}
array(0) {
}
如果删除初始化空$ _CONFIG数组的第一行config.php,则脚本可以正常工作,并且var_dumps是相同的。
请注意,这是从命令行运行的脚本。知道为什么会这样吗?我在两台独立的机器上试过这个,一台用PHP 5.3.3,另一台用PHP 5.3.5。
更新 - 这似乎只是命令行的一个问题。从浏览器运行时,它看起来很好。另外,还有一个我忘了提及的第三个文件,包括config.php
test.php的
require_once("/path/to/config.php");
当运行 test.php ,而不是从命令行运行config.php时,我得到上面的输出。
答案 0 :(得分:2)
您描述的情况不会产生您描述的输出。还有其他事情要发生;还没有在问题中添加其他代码。
从一个非常简单的测试:
$ ls -la
-rw-rw-r-- 1 jon jon 59 2012-02-28 20:37 config.inc.php
-rw-rw-r-- 1 jon jon 83 2012-02-28 20:37 config.php
$ cat config.*
<?php
$_CONFIG = array('x' => 'y');
var_dump($_CONFIG);
?>
<?php
$_CONFIG = array();
require_once('config.inc.php');
var_dump($_CONFIG);
?>
$ php config.php
array(1) {
["x"]=>
string(1) "y"
}
array(1) {
["x"]=>
string(1) "y"
}
您看到输出的可能原因:
require_once('config.inc.php');
首先检查您的包含路径,并且包含与您期望的不同的config.inc.php