奇怪的错误Cannot redeclare class

今天在写一个叫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填写您的邮件地址,订阅我们的精彩内容:

随机日志

回复 (2)

  1. tunpishuang  / 回复

    :grin: 搜索Cannot redeclare class进来的

  2. simaopig  / 回复

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

发表评论 修改评论取消编辑

允许使用的标签 - 您可以在评论中使用如下的 HTML 标签以及属性。

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

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

引用通告 (0)

› 尚无引用通告。

开灯