J'ai une fonction (c'est exactement ce qui se passe depuis le début de mon fichier):
<?php
//dirname(getcwd());
function generate_salt()
{
$salt = '';
for($i = 0; $i < 19; $i++)
{
$salt .= chr(Rand(35, 126));
}
return $salt;
}
...
Et pour une raison quelconque, je continue à avoir l'erreur:
Erreur fatale: Impossible de redéclarer generate_salt () (précédemment déclaré dans /Applications/MAMP/htdocs/question-air/includes/functions.php:5) dans /Applications/MAMP/htdocs/question-air/includes/functions.php à la ligne 13
Je ne peux pas comprendre pourquoi ou comment une telle erreur pourrait se produire. Des idées?
Cette erreur indique que votre fonction est déjà définie. ce qui peut signifier:
Pour vous aider avec le troisième point, une solution serait d’utiliser include_once
au lieu de include
lorsque vous incluez votre fichier functions.php
- afin qu’il ne puisse pas être inclus plus d’une fois.
Ne déclarez pas la fonction dans une boucle (comme foreach
, for
, while
...)! Déclare devant eux.
Vous devez inclure ce fichier (dans lequel cette fonction existe) une seule fois:
use: include_once("functions.php");
au lieu de: include ("functions.php");
Si rien de ce qui précède ne vous aide, avant la déclaration de fonction, ajoutez une coche pour éviter une nouvelle déclaration:
if (!function_exists('your_function_name')) {
function your_function_name() {
........
}
}
Vous incluez probablement le fichier functions.php plusieurs fois.
vous pouvez d'abord vérifier si le nom de votre fonction n'existe pas ou non avant d'écrire fonctionBy
if (!function_exists('generate_salt'))
{
function generate_salt()
{
........
}
}
OU vous pouvez changer le nom de la fonction en un autre nom
Une autre raison possible de cette erreur est que votre fonction a le même nom qu'une autre fonction intégrée PHP. Par exemple,
function checkdate($date){
$now=strtotime(date('Y-m-d H:i:s'));
$tenYearsAgo=strtotime("-10 years", $now);
$dateToCheck=strtotime($date);
return ($tenYearsAgo > $dateToCheck) ? false : true;
}
echo checkdate('2016-05-12');
où la fonction checkdate
existe déjà en PHP.
J'ai eu un comportement étrange lorsque mon * .php.bak (qui a été créé automatiquement par notepad) a été inclus dans la compilation. Après avoir supprimé tous les fichiers * .php.bak du dossier, cette erreur a disparu . Cela sera peut-être utile pour quelqu'un.
Dans mon cas, c'était à cause de la fonction dans une autre fonction! une fois que j'ai quitté la fonction, l'erreur a disparu et tout a fonctionné comme prévu.
Cette réponse explique pourquoi vous ne devriez pas utiliser function dans la fonction.
Cela pourrait aider quelqu'un.
J'ai eu le même problème. Et finalement c'était un double include. Un inclure dans un fichier nommé X. Et un autre inclure dans un fichier nommé Y. Sachant que dans le fichier Y j'avais include ('X')
Je n'aime pas function_exists('fun_name')
car il faut que le nom de la fonction soit transformé en chaîne. De plus, vous devez le nommer deux fois. Pourrait facilement rompre avec le refactoring.
Déclarez votre fonction en tant qu'expression lambda (je n'ai pas vu cette solution mentionnée):
$generate_salt = function()
{
...
};
Et utilisez ainsi:
$salt = $generate_salt();
Ensuite, lors de la ré-exécution dudit code PHP, la fonction remplace simplement la déclaration précédente.
Puisque le code que vous avez fourni n'inclut pas explicitement quoi que ce soit, soit il est inclus deux fois, soit (si le script est le point d'entrée du code), un pré-préposition automatique doit être configuré dans le serveur Web config/php.ini. ou bien vous avez une extension vraiment obscure chargée qui définit la fonction.
Je recommanderais d'utiliser get_included_files
- comme Pascal dit, soit vous regardez le mauvais fichier, soit cette fonction est déjà définie dans un fichier qui a été inclus.
require_once
est également utile si le fichier que vous tentez d'inclure est essentiel.
Cette erreur indique que votre fonction est déjà définie. ce qui peut signifier:
Je pense que votre problème en 3ème position du script, y compris ce fichier plus d'une fois, est résolu.Vous pouvez le résoudre en utilisant require_once
au lieu de require
ou include_once
au lieu de include
pour inclure votre fichier functions.php
- il ne peut donc pas être inclus plus d’une fois.
signifie que vous avez déjà créé une classe du même nom.
Par exemple:
class ExampleReDeclare {}
// some code here
class ExampleReDeclare {}
Ce deuxième ExampleReDeclare renvoie l’erreur.
ou vous pouvez créer une fonction en boucle
tel que
for ($ i = 1; $ i <5; $ i ++) { function foo () { echo 'quelque chose'; } }
foo ();
// Il affichera une erreur concernant la redéclaration