← Toutes les actualités

Publié le · mis à jour le · Équipe EPNB

Corriger l'erreur « unexpected T_PUBLIC » dans fpdf.php

Pourquoi FPDF provoque une erreur « syntax error, unexpected 'public' (T_PUBLIC) » sur certains serveurs, et comment la corriger durablement.

Article historique, publié en 2015. Il concerne d’anciennes copies de la bibliothèque FPDF embarquées dans des modules ou des applications PHP. Sur un projet récent, utilisez la version actuelle de FPDF installée par Composer.

Lors de la génération d’un PDF, certaines configurations de serveur produisent l’une de ces erreurs :

PHP Parse error: syntax error, unexpected 'public' (T_PUBLIC) in fpdf.php on line 216
PHP Parse error: syntax error, unexpected 'public' (T_PUBLIC) in fpdf.php on line 1342

La cause

Le mot-clé public se retrouve placé devant une instruction qui n’est pas une déclaration de méthode ou de propriété, par exemple devant un if. PHP refuse alors d’analyser le fichier. Le cas se rencontrait avec des copies de FPDF modifiées ou mal fusionnées dans des modules (générateurs de factures, de bons de livraison, d’étiquettes), et apparaissait souvent après un changement de version de PHP.

La correction

Faites une sauvegarde du fichier, puis supprimez le mot-clé public superflu. Vers la ligne 216, la ligne doit devenir :

if(function_exists('gzcompress'))

La modification est identique vers les lignes 1342 à 1344, qui doivent devenir :

if(!function_exists('imagepng'))
    $this->Error('GD extension is required for GIF support');
if(!function_exists('imagecreatefromgif'))

Les numéros de ligne varient selon la version du fichier : fiez-vous au message d’erreur et cherchez le public placé devant un if.

La solution durable

Modifier une bibliothèque embarquée dépanne, mais la correction sera perdue à la prochaine mise à jour du module, et l’ancienne copie de FPDF peut contenir d’autres incompatibilités avec les versions récentes de PHP. Quand c’est possible :

  • identifiez le module qui embarque cette copie et vérifiez s’il existe une version corrigée ;
  • sur un développement spécifique, remplacez la copie par la version maintenue de FPDF, installée et mise à jour par Composer ;
  • documentez la correction si vous devez la conserver, pour qu’elle ne soit pas écrasée sans le savoir.

Aller plus loin