Skip to content

奇怪的错误Cannot redeclare class

2009 六月 2
by 荒野无灯

今天在写一个叫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
    if (!empty($this->db->charset))
            $charset_collate = " DEFAULT CHARACTER SET $this->db->charset";
  if (!empty($this->db->collate))
            $charset_collate .= " COLLATE $this->db->collate";
        }
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
    if (!empty($this->db->charset))
            $charset_collate = " DEFAULT CHARACTER SET ".$this->db->charset;
  if (!empty($this->db->collate))
            $charset_collate .= " COLLATE ".$this->db->collate;
        }
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 错误就浪费了我大量的时间。

喜欢这篇文章吗?

请订阅本站 RSS feed填写您的邮件地址,订阅我们的精彩内容:,欢迎点击这里捐赠以支持荒野无灯转播到腾讯微博 转播到腾讯微博

作者:荒野无灯
出处:Hacklog【Hacklog】

声明: 本站遵循 署名-非商业性使用-相同方式共享 3.0 共享协议. 转载请注明转自Hacklog【荒野无灯weblog】

本文链接: http://ihacklog.com/?p=2304

2 Responses Post a comment
  1. 四月 1, 2011

    :grin: 搜索Cannot redeclare class进来的

  2. 六月 3, 2009

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

Leave a Reply

Allowed Tags - You may use these HTML tags and attributes in your comment.

<a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <q cite=""> <strong>

 :wink:  :-|  :-x  :twisted:  :)  8-O  :(  :roll:  :-P  :oops:  :-o  :mrgreen:  :lol:  :idea:  :-D  :evil:  :cry:  8)  :arrow:  :-?  :?:  :!:

Note: You may use basic HTML in your comments. Your email address will not be published.

Subscribe to this comment feed via RSS