2011-09-21 58 views
0

我收到以下错误信息:PHP在同一个文件中重新声明,但只在声明。错误?

[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”的搜索我只能找到下面的唯一声明和文件在两个inluded其他文件的使用。

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

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

+3

你确定你的文件没有在index.php中包含两次吗? –

+0

要了解@AlanMoore说的话,试试'include_once(db_get_groups.php)' –

+0

function_exists(db_get_groups)的结果是什么;? –

回答

1

底线是,如果函数定义两次,您将看到错误消息的唯一方法。有两种常见的方式可能发生。您应该仔细检查以下两项:

  1. 另一个文件声明功能db_get_groups
  2. db_get_groups.php包含多次。考虑使用include_once/require_once而不是include/require
+0

我采取了简单的方法,只是将所有include_once定义。不知道问题是什么。在这之后有很多重新宣布。从无到多......奇怪。 – Nicsoft

1

使用: require_once(“db_get_groups.php”);

或 include_once(“db_get_groups.php”);

而不仅仅是要求或包括。

1

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

如果这没有去任何地方,你可能包括多个文件?你是否包括那些包含它的其他文件?

您是否使用require/include或require_once/include_once?尝试* _once。

是否有到该文件的任何符号链接?如果是这样,你是否也可以包括他们?

最后,它可以帮助你,如果你添加一个日志()或echo()函数之外(之前)。