我最近将 PHP 5.3.8 升级到 5.3.20。升级完成后,我开始收到大量无法重新声明的错误:
[2012 年 12 月 20 日 11:15:00 America/New_York] PHP 致命错误:无法在第 3 行的 /var/www/htdocs/includes/mysql.php 中重新声明类用户
在我的一个 PHP 类中,我使用如下代码在构造函数中实例化一个 mysql 类:
class foo {
function foo() {
global $db;
require '/var/www/htdocs/includes/mySQL.php';
$db = new mydb_driver();
}
function show_text() {
require '/var/www/htdocs/includes/mySQL.php';
$db2 = new mydb_driver();
}
}
在同一个类中,我创建了一个函数,该函数使用不同的变量实例化同一个 mysql 类,以便我可以连接到不同的数据库。第二个要求是触发错误的原因,我不确定为什么。如果我从 show_text 中删除 require 或将其更改为 require_once 它工作正常。
有谁知道这两个版本之间发生了什么变化会导致此代码失败?我什至不确定 $db2 是如何在没有要求的情况下正确初始化的。是否需要类构造函数使其在文件中全局可见?
编辑: 这不是日志记录问题,并且在升级之前没有发生错误。在升级之前,这些应用程序运行良好。这就是我在错误日志中启用错误的方式:
error_reporting = E_ALL & ~E_NOTICE