« Unsupported operand types: string + int » : un calcul qui plante sous PHP 8

Fiche du décodeur d'erreurs, mise à jour le 12 octobre 2026

BloquantCompatibilité PHP 8
Le message affiché
Fatal error: Uncaught TypeError: Unsupported operand types: string + int
Autres formulations du même message 5
  • Fatal error: Uncaught TypeError: Unsupported operand types: array + int
  • PHP Fatal error: Uncaught TypeError: Unsupported operand types: string * float
  • Warning: A non-numeric value encountered
  • Fatal error: Uncaught Error: Unsupported operand types
  • Notice: A non well formed numeric value encountered

Le code fait un calcul (addition, multiplication…) avec une valeur qui n’est pas un nombre : un texte, un champ vide ou un tableau. PHP 7 laissait passer, au pire avec l’avertissement « A non-numeric value encountered ». PHP 8 arrête la page avec « Unsupported operand types » et réserve désormais cet avertissement aux valeurs qui commencent par un chiffre, comme « 12px ».

Pourquoi cette erreur apparaît

  • Un champ de réglage laissé vide (largeur, quantité, frais, prix) est enregistré comme texte vide puis utilisé dans un calcul.
  • Une valeur saisie avec son unité, comme « 12px » ou « 3 kg », est traitée comme un nombre.
  • Une métadonnée ou une option contient un tableau là où le code attend un nombre : ce cas était déjà fatal sous PHP 7.
  • Le code a été écrit pour PHP 7, qui convertissait un texte en zéro avec un simple avertissement.

Comment corriger le problème

Identifier le calcul en cause

Le message indique les deux types en présence, par exemple string + int : un texte additionné à un nombre. Le chemin qui suit mène au fichier du calcul, souvent une extension de devis, de prix ou de livraison, ou la feuille de style générée par un thème.

Remplir les réglages numériques vides

Ouvrez les réglages de l’extension ou du thème concerné et vérifiez chaque champ qui attend un nombre : sous PHP 8, un champ vide suffit à provoquer l’erreur fatale, et une valeur suivie d’une unité (« 12px » au lieu de « 12 ») produit l’avertissement « A non-numeric value encountered ». Saisissez un chiffre seul, enregistrez, puis rechargez la page qui plantait.

Appliquer les mises à jour de compatibilité

Mettez à jour l’extension ou le thème : les versions récentes convertissent souvent les valeurs avant le calcul. Si l’administration est inaccessible, désactivez d’abord l’élément en renommant son dossier, ou repassez provisoirement à la version de PHP précédente dans l’espace client, le temps de faire la mise à jour.

Convertir la valeur avant le calcul

Dans votre code, forcez le type attendu avec (int) ou (float), ou testez la valeur avec is_numeric(). Pour un tableau, cherchez d’abord pourquoi le code en reçoit un : le convertir masquerait le vrai problème.

$largeur = get_theme_mod( 'largeur_contenu', 1200 );

// Avant : $marge = $largeur + 40;
$marge = (int) $largeur + 40;

Faites une sauvegarde avant de modifier des réglages de prix ou de livraison sur une boutique, puis testez une commande après la correction.

Un autre message d'erreur ? Collez-le dans le décodeur : il le reconnaît et vous oriente vers la bonne fiche.

Ouvrir le décodeur