Je migre une application PHP 5.2.x vers un nouveau serveur 5.2.x. L'ancien serveur a effectivement démarré en tant que serveur PHP 4.0 il y a de nombreuses années et était mis à niveau vers PHP 5.2 au fil du temps. Un de nos modules a une fonction qui est redéclarée si ce module est utilisé plus d'une fois. Nous pouvons facilement résoudre ce problème, mais nous sommes perplexes quant à la façon dont cela aurait pu fonctionner.La fonction Redéclare fonctionne sur l'ancien serveur mais n'est pas nouvelle
Sur le nouveau serveur, il échouera avec un prévu:
Fatal error: Cannot redeclare function
Le problème est que sur l'ancien serveur, il a été toujours nouvelle déclaration de la fonction! Existe-t-il un paramètre PHP ou un usage spécial ici qui le fait fonctionner sur un serveur mais pas sur un autre?
Merci!
Modifier Toujours en train d'essayer de voir comment cela est possible. Le site erreurs FATAL mais a une exécution après ce point d'erreur.
Etes-vous sûr? Sans un peu de ** sérieux ** [hackery] (http://www.php.net/manual/en/ref.runkit.php), vous ne pouvez jamais redéclarer une fonction PHP. – ceejayoz
PHP4 a permis des redéclations de fonction, PHP5 non. vous devrez changer le module en include_once/require_once, ou envelopper la définition de la fonction dans un bloc 'if (! function_exists ('...')) {...}'. –
@MarcB Ai-je vraiment utilisé PHP5 aussi longtemps? Je pourrais jurer que PHP4 ne le permet pas non plus. – ceejayoz