«Неустранимая ошибка: невозможно обновить <function>»

У меня есть функция (это именно то, как она появляется, начиная с моего файла):

<?php //dirname(getcwd()); function generate_salt() { $salt = ''; for($i = 0; $i < 19; $i++) { $salt .= chr(rand(35, 126)); } return $salt; } ... 

И по какой-то причине я продолжаю получать ошибку:

Неустранимая ошибка: невозможно обновить файл generate_salt () (ранее объявленный в /Applications/MAMP/htdocs/question-air/includes/functions.php:5) в /Applications/MAMP/htdocs/question-air/includes/functions.php on line 13

Я не могу понять, почему и как может произойти такая ошибка. Есть идеи?

Solutions Collecting From Web of "«Неустранимая ошибка: невозможно обновить <function>»"

Эти ошибки говорят, что ваша функция уже определена; что может означать:

  • у вас есть одна и та же функция, определенная в двух файлах
  • или у вас есть одна и та же функция, определенная в двух местах в одном файле
  • или файл, в котором определена ваша функция, включается два раза (так, кажется, функция определена два раза)

Чтобы помочь с третьим пунктом, решением будет использовать include_once вместо include при включении вашего файла functions.php – поэтому его нельзя включить более одного раза.

Решение 1

dont объявляет функцию внутри цикла (например, foreach , for , while и т. д.). Заявите перед ними.

Решение 2

Вы должны включать только содержащий функцию файл:
use: include_once("functions.php");
вместо: include ("functions.php");

Решение 3

Если ни одно из вышеописанных действий не помогает, перед объявлением функции проверьте, существует ли она:

 if (!function_exists('your_function_name')) { function your_function_name() { ........ } } 

Вы, вероятно, включаете файл functions.php более одного раза.

вы можете проверить сначала, если имя вашей функции не существует или нет, прежде чем писать функцию By

  if (!function_exists('generate_salt')) { function generate_salt() { ........ } } 

ИЛИ вы можете изменить имя функции на другое имя

У меня было странное поведение, когда мой * .php.bak (который автоматически был создан блокнотом) был включен в компиляцию. После того как я удалил все * .php.bak из папки, эта ошибка исчезла. Возможно, это будет полезно для кого-то.

Другой возможной причиной получения этой ошибки является то, что ваша функция имеет то же имя, что и другая встроенная функция PHP. Например,

 function checkdate($date){ $now=strtotime(date('Ymd H:i:s')); $tenYearsAgo=strtotime("-10 years", $now); $dateToCheck=strtotime($date); return ($tenYearsAgo > $dateToCheck) ? false : true; } echo checkdate('2016-05-12'); 

где функция checkdate уже существует в PHP.

Я бы рекомендовал использовать get_included_files – поскольку Паскаль говорит, что вы либо как-то смотрели на неправильный файл, либо эта функция уже определена в файле, который был включен.

require_once также полезна, если файл, который вы пытаетесь включить, имеет важное значение.

У меня такая же проблема. И, наконец, это было двойное включение. Один из них относится к файлу с именем X. И еще один включает в себя файл с именем Y. Зная, что в файле YI есть («X»)

Поскольку код, который вы предоставили, явно не содержит ничего, либо он дважды включается, либо (если скрипт является точкой входа для кода), в конфигураторе веб-сервера / php.ini должна быть установлена ​​автоматическая добавка или, альтернативно, у вас есть действительно неясное расширение, которое определяет эту функцию.

означает, что вы уже создали класс с тем же именем.

Например:

 class ExampleReDeclare {} // some code here class ExampleReDeclare {} 

Этот второй примерReDeclare выдаст ошибку.

или вы можете создать функцию в цикле

  • такие как

    for ($ i = 1; $ i <5; $ i ++) {function foo () {echo 'something'; }}

Foo ();
// Будет отображаться ошибка, связанная с повторной декларацией

Эти ошибки говорят, что ваша функция уже определена; что может означать:

  • у вас есть одна и та же функция, определенная в двух файлах
  • или у вас есть одна и та же функция, определенная в двух местах в одном файле
  • или файл, в котором определена ваша функция, включается два раза (так, кажется, функция определена два раза)

Я думаю, что ваша проблема на третьей позиции заключается в том, что скрипт содержит этот файл более одного раза. Таким образом, вы можете решить его, используя require_once вместо require или include_once вместо include для включения вашего файла functions.php – поэтому его нельзя включить больше чем один раз.

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

Этот ответ объясняет, почему вы не должны использовать функцию внутри функции .

Это может помочь кому-то.