PHP Complaing на redeclare в том же фильме, но только на объявлении.Ошибка? - PullRequest
0 голосов
/ 21 сентября 2011

Я получаю следующее сообщение об ошибке:

   [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» во всем проекте я могу найти только единственное объявление ниже, и файл включенв двух других файлах для использования.

Я попытался выяснить, не выполнял ли я какой-либо импорт файла более одного раза, но не смог найти.

В чем проблема и как ее исправить?Чувствуется, действительно, это проводной ...

Ответы [ 3 ]

1 голос
/ 21 сентября 2011

Суть в том, что вы можете увидеть это сообщение об ошибке только в том случае, если функция определена дважды.Это может произойти двумя способами.Вы должны дважды проверить оба из них:

  1. Другой файл объявляет, что функция db_get_groups.
  2. db_get_groups.php включена несколько раз.Попробуйте использовать include_once / require_once вместо include / require.
1 голос
/ 21 сентября 2011

Попробуйте удалить это определение и вызвать db_get_groups (), посмотрите, есть ли какие-либо подсказки в журналах ошибок.

Если это никуда не денется, возможно, вы включаете файл более одного раза? Вы включаете оба других файла, которые включают его куда-то?

Вы использовали require / include или require_once / include_once? Попробуйте * _once.

Есть ли символические ссылки на этот файл? Если да, не могли бы вы их включить?

Наконец, это может помочь вам, если вы добавили log () или echo () вне функции (перед ней).

1 голос
/ 21 сентября 2011

Использование: require_once ( "db_get_groups.php");

Или, include_once ( "db_get_groups.php");

Вместо того, чтобы просто требовать или включать.

...