Votre site est cassé après un changement de PHP ? Voici quoi faire, dans l’ordre.

Dans la grande majorité des cas, rien n’est perdu : le code et la base de données sont intacts. Simplement, la nouvelle version de PHP ne comprend plus une ligne.

Remettre le site en marche (2 minutes)

Dans le panel de votre hébergeur, cherchez la rubrique « Version de PHP », « Configuration PHP » ou « MultiPHP » (le nom change selon l’hébergeur). Repassez sur la version précédente, enregistrez, patientez une minute et rechargez le site.

C’est un pansement, pas une solution : la version précédente est probablement elle-même en fin de support. Notez la date, il faudra traiter le fond du problème.

Lire l’erreur au lieu de deviner

L’erreur est écrite quelque part, il suffit de savoir où chercher :

  • le journal d’erreurs de l’hébergeur (rubrique « Logs » ou fichier error_log à la racine) ;
  • sur WordPress, wp-content/debug.log (voir le guide WordPress) ;
  • sur PrestaShop, le dossier var/logs/.

Pour afficher les erreurs à l’écran le temps d’un test, uniquement sur une copie :

ini_set('display_errors', '1');
error_reporting(E_ALL);

Ne laissez jamais cet affichage actif sur le site public : il montre vos chemins de fichiers à tout le monde.

Les messages les plus fréquents

MessageCauseCorrection
Call to undefined function mysql_connect()Extension supprimée depuis PHP 7.Passer à mysqli ou PDO.
Call to undefined function each()Fonction retirée en PHP 8.0.Réécrire la boucle avec foreach.
Call to undefined function curl_init()Extension non activée pour la nouvelle version de PHP.L’activer dans le panel de l’hébergeur.
Parse error: syntax error, unexpected …Syntaxe retirée, ou plugin trop ancien.Mettre à jour ou corriger le fichier indiqué.
Warning: Undefined array key "x"Notice devenue warning en PHP 8.0.Tester la clé avec isset() ou ??.
Deprecated: Passing null to parameternull envoyé à une fonction interne (PHP 8.1).Donner une valeur par défaut : ?? ''.
Deprecated: Creation of dynamic propertyPropriété non déclarée (PHP 8.2).Déclarer la propriété dans la classe.
Allowed memory size exhaustedLes réglages mémoire ne sont pas toujours repris au changement de version.Vérifier memory_limit pour la nouvelle version.

Les lignes « Deprecated » et « Warning » n’arrêtent pas le site à elles seules : seuls les « Fatal error » et « Parse error » provoquent l’écran blanc ou l’erreur 500.

Ce qu’il vaut mieux ne pas faire

  • Masquer toutes les erreurs avec error_reporting(0) comme solution définitive : le problème reste, vous ne le voyez simplement plus.
  • Modifier le code en direct sur le site public, sans sauvegarde.
  • Réinstaller WordPress ou PrestaShop « pour voir » : vous risquez d’écraser des données.
  • Rester indéfiniment sur la vieille version de PHP sans date limite : l’hébergeur finira par la retirer.

Quand demander de l’aide

Si l’erreur pointe dans un plugin, un thème ou un module que vous ne maîtrisez pas, si la boutique perd des ventes, ou si plusieurs erreurs s’enchaînent, envoyez-moi l’adresse du site et le message exact. Je vous dis ce qui bloque et ce que ça demande, avant toute intervention.

Questions fréquentes

Mes données sont-elles perdues ?

Presque jamais. Un changement de version de PHP ne touche ni vos fichiers ni votre base de données : il change seulement la façon dont le code est exécuté. En repassant à la version précédente, le site revient tel quel.

Pourquoi mon hébergeur a-t-il changé la version sans que je le sache ?

Les hébergeurs retirent régulièrement les versions de PHP qui ne sont plus suivies, pour des raisons de sécurité, en prévenant par e-mail. Ce message se perd facilement dans les spams : vérifiez vos courriers de l’hébergeur.

Combien de temps faut-il pour réparer ?

Une erreur isolée se règle souvent en moins d’une heure. Un site avec plusieurs plugins abandonnés demande quelques jours, avec une copie de test pour ne rien risquer.

on en parle ?

Dites-moi quel site, je vous dis ce qu’il faut.

Demander un audit