从5.2升级到PHP 5.3后,我似乎遇到了这个问题 该站点运行index.php,其中包括()各种其他实用程序函数,然后包含基于GET变量值的正确页面。
现在有一点我无法理解的是,在xdebug中我没有看到 $ GLOBALS 。 另一位是 -
的index.php:
include_once('includes/global.inc.php');
include_once("classes/db.inc.php");
$db = new db();
global.inc.php:
$glob['dbusername'] = 'myusername';
$glob['dbpassword'] = 'mypassword';
//etc
db.inc.php声明了一个名为db:
的类class db
{
function db()
{
global $glob;
$this->db = @mysql_connect($glob['dbhost'], $glob['dbusername'], $glob['dbpassword']);
}
} // end of db class
问题是,如果我在db()中放置一个断点,我看不到$ glob,调试器说它未初始化。
答案 0 :(得分:2)
好的,这就是为什么$ glob在Eclipse上的xdebug中显示为空的原因。当与PHP 5.3一起使用时,这是xdebug 2.0.5的一个错误。见http://bugs.xdebug.org/view.php?id=376
所以归结为PHP无法连接到MySQL ......(我不知道为什么,我启用了php_mysql.dll和apache错误日志是干净的,phpinfo()显示MySQL好吧)
我现在正在寻找PHP.ini ......
答案 1 :(得分:1)
在include中使用globals时遇到过类似的问题。我从来没有真正理解它到底是什么 - 有时看起来包括它们有自己的范围。 (当然,如果从函数中包含文件,它就无法工作,因为include将继承函数的作用域。)
我敢打赌,如果你使用其中一种,它会起作用:
global $glob;
$glob['dbusername'] = 'myusername';
$glob['dbpassword'] = 'mypassword';
或
$GLOBALS["glob"]['dbusername'] = 'myusername';
$GLOBALS["glob"]['dbpassword'] = 'mypassword';
您在调试器中看不到$GLOBALS
的事实可能是因为它不是真正的变量,而是构造。