2011-09-21 45 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()函數之外(之前)。