Что может вызвать эту ошибку PHP? Ошибка в PHP? - PullRequest
0 голосов
/ 28 апреля 2009

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

[27-Apr-2009 10:26:06] PHP Fatal error:  Cannot redeclare alphanumeric() (previously declared in /home/iddoc/public_html/lib/common.php:6) in /home/iddoc/public_html/lib/common.php on line 8

Обратите внимание:

/home/iddoc/public_html/lib/common.php:6) in 
/home/iddoc/public_html/lib/common.php on line 8

Вот оскорбительные строки:

function alphanumeric($str) {
    return strtolower(preg_replace("/[^A-Za-z0-9]/",'',$str));
}

До этих строк есть только комментарии. Нет другого объявления этой функции где-либо еще в этом файле или любом другом.

Странно, нет?

Ответы [ 7 ]

8 голосов
/ 28 апреля 2009

Вы используете require_once () для включения common.php везде? Если вы используете только require или include, это вызовет эту проблему.

4 голосов
/ 28 апреля 2009

Используете ли вы require / include для ссылки на файл? Это распространенная ошибка при включении файла дважды. PHP не знает, что делать, если видит два объявления, даже если они из одного файла.

Попробуйте использовать это:

include_once('lib/common.php');
2 голосов
/ 28 апреля 2009

Возможно, вы включили файл common.php более одного раза. Второй раз, когда он загружается, могут возникнуть такие ошибки, так как функция уже загружена.

Это странная ошибка, но, вероятно, она покажется логичной, когда проблема выяснится. Я бы посоветовал посмотреть ваши включения или переключить их на include_once. Может быть, посмотрите, что выводит debug_print_backtrace () до загрузки этой функции.

1 голос
/ 28 апреля 2009

Вы всегда должны использовать include_once или require_once при включении файлов кода в PHP. Есть исключения из этого правила, но если вы не уверены, используйте версии _once. Единственный раз, когда можно использовать include или require, это когда вы знаете, что файл никогда больше никогда не будет включен в ту же программу ИЛИ включаемый файл не объявляет функции (без их защиты с помощью if (function_exists ()) { } блок).

В качестве примера, система шаблонов - одно из немногих применений, где вы, вероятно, не хотите использовать версию _once.

1 голос
/ 28 апреля 2009

этот common.php включен ранее? Это может вызвать эту ошибку.

1 голос
/ 28 апреля 2009

Звучит так, как будто вы включили файл common.php несколько раз. Используете ли вы include (), require () или require_once () для ваших включений?

0 голосов
/ 28 апреля 2009

Проверьте рекурсивные включения и убедитесь, что ваши блоки не выполняются несколько раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...