0

我收到以下错误消息:

   [Wed Sep 21 21:19:46 2011] [error] [client 127.0.0.1] PHP Fatal error:  Cannot redeclare db_get_groups() 
(previously declared in /Library/WebServer/Documents/SMICAdmin/databasescripts/db_get_groups.php:4) 
in /Library/WebServer/Documents/SMICAdmin/databasescripts/db_get_groups.php on line 24, 
referer: http://localhost/SMICAdmin/index.php

如您所见,错误消息抱怨同一个函数 db_​​get_groups() 在同一个脚本中出现了两次。但事实并非如此,整个文件都包含在此处(db_get_groups.php):

<?php

    function db_get_groups($dbconnection){  //Line 4

        $query = "SELECT id FROM groups";
        $result = mysqli_query($dbconnection, $query);

        $rows = mysqli_fetch_all($result, MYSQLI_ASSOC);
        $grouplist = Array();

        foreach ($rows as $key => $value) {
            error_log(" Value -> ".$value['id']);
            $grouplist[] = $value['id'];

        }

    return $grouplist;
    } //Line 24
    ?>

在整个项目中搜索“db_get_groups”时,我只能找到下面唯一的声明,并且该文件包含在其他两个文件中以供使用。

我确实尝试查找是否以某种方式多次导入文件,但找不到任何文件。

有什么问题,我该如何解决?感觉这个真的连线了...

4

3 回答 3

1

使用:require_once("db_get_groups.php");

或者,include_once("db_get_groups.php");

而不仅仅是要求或包含。

于 2011-09-21T19:39:01.607 回答
1

最重要的是,您看到该错误消息的唯一方法是该函数被定义了两次。发生这种情况的常见方式有两种。你应该仔细检查这两个:

  1. 另一个文件声明了该函数db_get_groups
  2. db_get_groups.php包含多次。考虑使用include_once/require_once而不仅仅是include/ require
于 2011-09-21T19:40:56.537 回答
1

尝试删除该定义,并调用 db_get_groups(),查看错误日志中是否有任何提示。

如果这不去任何地方,您是否可能不止一次地包含该文件?您是否包括在某处包含它的其他文件?

你使用了 require/include 还是 require_once/include_once?尝试 *_once。

该文件是否有任何符号链接?如果是这样,你能把它们也包括进去吗?

最后,如果您在函数之外(在它之前)添加了 log() 或 echo(),它可能会对您有所帮助。

于 2011-09-21T19:45:00.583 回答