奇怪的错误Cannot redeclare class
2009 六月 2
今天在写一个叫wp login logger的插件,出现了奇怪的错误。
类名明明是唯一的,却出现了这个错误:
PHP Fatal error: Cannot redeclare class wpLoginLogger in xxxx.php on line 27
我又改了一个绝对是唯一的类名,在启用插件时还是提示这个错误。
于是注释掉其中一个代码:
也就是:
1 | //register_activation_hook(__FILE__,array(&$wpLoginLogger,'wpLoginLoggerInstall')); |
结果插件“能够”启用,但却不能正常使用,因为数据库表没有成功建立。
于是回头去看那个建表的函数,发现这个代码有问题:
1 2 3 4 5 |
1 2 3 4 5 6 7 8 9 | $sql = "CREATE TABLE " . $this->tableName . " ( id mediumint(9) NOT NULL AUTO_INCREMENT PRIMARY KEY, username varchar(60) NOT NULL, time datetime NOT NULL, ip varchar(20) NOT NULL, location char(200), success char(1) NOT NULL, active datetime NOT NULL ) $charset_collate;"; |
将上面代码分别修改为:
1 2 3 4 5 |
1 2 3 4 5 6 7 8 9 | $sql = "CREATE TABLE " . $this->tableName . " ( id mediumint(9) NOT NULL AUTO_INCREMENT PRIMARY KEY, username varchar(60) NOT NULL, time datetime NOT NULL, ip varchar(20) NOT NULL, location char(200), success char(1) NOT NULL, active datetime NOT NULL ) ".$charset_collate.' ;'; |
问题得到解决。
由此可见有时候,php的错误提示不一定准确。遇到问题还是要靠自己分析代码,不能光靠错误提示。还有就是写代码时要仔细点,小错误也会导致很严重的后果。
今天这个奇怪的Cannot redeclare class 错误就浪费了我大量的时间。
2 Responses
Post a comment








呵呵。很认真的孩子啊。。