Développement & Refactoring27 Octobre 20266 min de lecture

« Call to undefined function » après le passage à PHP 8 : create_function, each, mysql_connect

Votre site affiche « Fatal error: Call to undefined function » depuis une mise à jour de PHP ? Trois fonctions retirées expliquent la plupart des cas. Voici comment les reconnaître et que faire.

Réponse courte : ce message veut dire que le code appelle une fonction que la version de PHP actuelle ne connaît plus. Après un passage à PHP 7 ou 8, trois fonctions en sont la cause la plus fréquente : create_function(), each() et les anciennes fonctions mysql_ comme mysql_connect().

create_function() servait à créer de petites fonctions à la volée. Elle est marquée obsolète depuis PHP 7.2 et retirée en PHP 8.0. Un ancien plugin ou thème qui l'utilise fait tomber tout le site, avec l'erreur « Call to undefined function create_function() ». La correction consiste à la remplacer par une fonction anonyme (closure), ce qui demande de lire le code autour.

each() servait à parcourir un tableau avec une boucle while. Obsolète depuis PHP 7.2, elle est retirée en PHP 8.0. On la remplace par une boucle foreach. Le changement semble simple, mais il faut s'assurer que la logique reste identique.

Les fonctions mysql_ (mysql_connect, mysql_query, etc.) ont été retirées en PHP 7.0. Si un site très ancien fonctionne encore, c'est qu'il tourne sur une version de PHP elle-même ancienne. Le jour où l'hébergeur la retire, tout tombe. La migration vers mysqli ou PDO est un vrai travail de réécriture, pas un simple remplacement.

Comment savoir d'où vient l'erreur ? Le journal d'erreurs donne le chemin du fichier et la ligne. Si le chemin contient wp-content/plugins/, le plugin est responsable : cherchez une mise à jour ou un remplaçant. S'il pointe vers votre thème ou un fichier sur mesure, la correction passe par le code.

Ne patchez pas à l'aveugle. Une correction mal faite peut introduire des erreurs silencieuses, par exemple des calculs ou des données qui changent sans message d'erreur. Travaillez sur une copie, testez les pages importantes (formulaires, panier, administration), puis seulement ensuite touchez à la production.

Si le site est en panne et que vous ne voulez pas y toucher, nous faisons ce travail à distance, avec une sauvegarde préalable et une entente de confidentialité signée avant d'accéder au serveur. Voir aussi notre page sur la migration vers PHP 8.3.

Dépannage PHP rapide · partout au Québec

Votre site est concerné par cette vulnérabilité ?

Nos techniciens en informatique et programmeurs PHP vérifient votre site, colmatent les failles et migrent vers PHP 8.3 en limitant au maximum l'interruption de service.

Besoin d'aide pour ce problème ?

Poursuivre votre lecture technique

Développement & Refactoring7 min de lecture

Top 10 des fonctions dépréciées qui font planter votre code sous PHP 8.3

De create_function() à each() en passant par les signatures de méthodes et la null-safety : inventaire des incompatibilités fatales et exemples de refactoring propre.

Lire l'article complet→
E-Commerce & WordPress8 min de lecture

Guide complet : Migrer un site WooCommerce vers PHP 8.3 sans perdre de commandes

La méthodologie pas-à-pas pour sécuriser une boutique e-commerce, tester les passerelles de paiement Stripe/PayPal et migrer vers PHP 8.3 avec un minimum de coupure.

Lire l'article complet→
Appeler