Table des Matières

  1. Introduction

  2. La relation entre Dolibarr et PHP

  3. Versions PHP prises en charge par Dolibarr (2023-2025)

  4. Problèmes courants de compatibilité PHP dans Dolibarr

  5. Diagnostiquer les problèmes PHP avec Dolibarr

  6. Comprendre les journaux d'erreurs et les types d'avertissement

  7. Mettre à niveau ou rétrograder PHP en toute sécurité pour Dolibarr

  8. Ajuster la configuration PHP pour Dolibarr

  9. Correction des erreurs Dolibarr causées par les modifications PHP

  10. Comment les modules et modèles personnalisés se dégradent avec les mises à jour PHP

  11. Meilleures pratiques de développement pour la compatibilité PHP

  12. Comment pérenniser votre instance Dolibarr

  13. Réflexions finales


1. Introduction

Dolibarr ERP & CRM est une plateforme de gestion d'entreprise open source robuste, conçue pour répondre aux besoins évolutifs des indépendants, des PME et même des grandes organisations. Conçu en PHP, Dolibarr s'appuie entièrement sur l'environnement d'exécution PHP pour toutes ses opérations, du rendu des pages web à l'exécution de la logique métier et des points de terminaison des API.

Pour cette raison, Compatibilité des versions PHP ce n’est pas seulement un détail technique : c’est un élément fondamental qui peut avoir un impact direct sur les performances, les fonctionnalités et la stabilité.

Dans cet article, nous explorerons comment PHP et Dolibarr interagissent, identifierons les problèmes de compatibilité courants, passerons en revue les diagnostics et les correctifs, et proposerons les meilleures pratiques pour maintenir votre système à la fois à jour et stable.


2. La relation entre Dolibarr et PHP

Dolibarr est entièrement développé en PHP. Chaque fonctionnalité, module et composant d'interface utilisateur est traité par un moteur d'exécution basé sur PHP. Autrement dit, la version de PHP exécutée sur votre serveur. doit s'aligner sur ce que Dolibarr prend en charge.

Si votre version PHP est trop vieuxDolibarr risque de ne pas démarrer ou de manquer des fonctionnalités clés. Si c'est le cas, trop nouveau, vous pourriez être confronté à des erreurs inattendues, à des fonctions obsolètes et à des modules cassés.

Les mises à niveau PHP introduisent :

  • Amélioration des performances

  • Dépréciation ou suppression de fonctions

  • Modifications du comportement par défaut (par exemple, typage strict, gestion des erreurs)

  • Extensions ou modifications de configuration

  • Correctifs de sécurité

Les versions de Dolibarr sont régulièrement mises à jour pour prendre en charge les nouvelles versions de PHP, mais si vous ne suivez pas attentivement ces changements, vous risquez de vous retrouver avec un instance cassée après une mise à niveau de PHP.


3. Versions PHP prises en charge par Dolibarr (2023-2025)

Voici un aperçu général de la compatibilité PHP entre les versions récentes de Dolibarr :

Version Dolibarr PHP minimum PHP recommandé PHP testé au maximum
13.x – 14.x PHP 7.0 PHP 7.4 PHP 8.0
15.x – 17.x PHP 7.2 PHP 8.0 PHP 8.1
18.x – 20.x PHP 7.4 PHP 8.0 / 8.1 PHP 8.1
21.x – 22.x PHP 8.0 PHP 8.1 + PHP 8.2 / 8.3
Future 23.x+ PHP 8.1 PHP 8.2 + PHP 8.3 +

Important:Référez-vous toujours aux notes de publication de la version spécifique de Dolibarr que vous exécutez avant de mettre à niveau PHP.


4. Problèmes courants de compatibilité PHP dans Dolibarr

Lorsque les versions PHP ne sont pas correctement alignées avec les exigences de Dolibarr, les problèmes suivants peuvent apparaître :

4.1 Erreurs fatales

  • Exemple :

    php

    Fatal error: Uncaught Error: Call to undefined function get_magic_quotes_gpc()

Cela se produit lorsque le code Dolibarr appelle une fonction supprimée dans les versions PHP plus récentes (comme PHP 8.0 et supérieures).

4.2 Avertissements d'obsolescence

  • Exemple :

    php

    Deprecated: Array and string offset access syntax with curly braces is deprecated

Cet avertissement ne fait pas planter l'application, mais encombre les journaux et peut indiquer de futurs points de défaillance.

4.3 Incompatibilité des modules

  • Les modules tiers écrits pour PHP 7.x peuvent ne pas fonctionner sous PHP 8.x

  • Les modèles PDF personnalisés utilisant des fonctions obsolètes peuvent générer des documents vierges ou endommagés

4.4 Comportement inattendu

  • Redirections brisées

  • Problèmes de session (par exemple, déconnexions constantes)

  • Échecs d'authentification de l'API

Ceux-ci sont plus difficiles à retracer mais proviennent souvent de valeurs par défaut modifiées ou gestion de type plus stricte dans les versions plus récentes de PHP.


5. Diagnostiquer les problèmes PHP avec Dolibarr

La première étape pour résoudre les problèmes de compatibilité est de identifier avec précision la cause.

5.1 Activer le rapport d'erreurs

In htdocs/main.inc.php, activer la sortie d'erreur :

php

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

Cela vous permettra de voir les avertissements, les avis et les erreurs fatales directement dans votre navigateur pendant les tests.

5.2 Vérifier les journaux PHP

Les journaux PHP contiennent souvent plus de détails que la sortie du navigateur.

Emplacements typiques :

  • /var/log/php-fpm.log

  • /var/log/apache2/error.log

  • /var/log/nginx/error.log

  • /var/log/php/error.log (Hébergement partagé)

Consultez les entrées récentes liées à undefined functions, deprecated syntax, memory_limit violations.

5.3 Utiliser phpinfo()

Créez un fichier PHP simple dans votre racine Dolibarr :

php

<?php phpinfo(); ?>

Accédez-y via un navigateur et confirmez :

  • PHP version

  • Extensions chargées

  • Valeurs de configuration (memory_limit, upload_max_filesize, Etc)

  • Paramètres de session et de fuseau horaire

6. Comprendre les journaux d'erreurs et les types d'avertissement

Comprendre les différents types d'erreurs générées par PHP est essentiel pour un dépannage efficace. Voici un aperçu des types d'erreurs les plus courants rencontrés dans Dolibarr en cas de non-concordance PHP.

6.1 Erreurs fatales

Ces actions interrompent immédiatement l'exécution. Les pages Dolibarr peuvent s'afficher vides ou s'interrompre en cours de route.

Exemple :

php

Fatal error: Uncaught Error: Undefined function mb_str_split()

6.2 Avertissements

Les avertissements indiquent un problème, mais la page se charge généralement quand même.

Exemple :

php

Warning: Use of undefined constant ‘FOO’ - assumed ‘FOO’

Ces erreurs apparaissent souvent lorsque le code tiers n'a pas été mis à jour pour les nouvelles versions de PHP.

Avis 6.3

Les avis pointent vers du code bâclé ou obsolète.

Exemple :

php

Notice: Trying to access array offset on value of type null

Ces erreurs peuvent ne pas affecter les fonctionnalités aujourd'hui, mais peuvent devenir des erreurs dans les futures versions de PHP.

6.4 Avis obsolètes

PHP signale des fonctionnalités qui seront bientôt supprimées. Ces notifications sont votre système d'alerte précoce.

Exemple :

php

Deprecated: Function create_function() is deprecated in ...

Bien que le noyau de Dolibarr soit généralement nettoyé à chaque version, les modules plus anciens et le code personnalisé provoquent souvent ces avis.


7. Mettre à niveau ou rétrograder PHP en toute sécurité pour Dolibarr

Changer votre version de PHP peut résoudre des problèmes, ou en créer. L'essentiel est de le faire méthodiquement.

7.1 Quand mettre à niveau PHP

Effectuez une mise à niveau si :

  • Vous utilisez une ancienne version de PHP (par exemple 7.2, 7.3) qui n'est plus prise en charge

  • Vous avez besoin de meilleures performances ou de fonctionnalités de sécurité

  • Vous passez à une version plus récente de Dolibarr (par exemple, 22.x+ nécessite PHP 8.0 ou supérieur)

7.2 Quand rétrograder PHP

Rétrograder si :

  • Vous utilisez des versions héritées de Dolibarr (par exemple, v12–v14)

  • Les modules personnalisés ne sont pas compatibles avec PHP 8.x

  • Vous rencontrez des erreurs fatales après une mise à jour PHP

Important:Testez toujours dans un environnement de test avant de modifier PHP en production.


7.3 Comment changer la version de PHP (Linux CLI)

Pour Ubuntu/Debian :

bash

sudo apt install php8.1 php8.1-mysql php8.1-cli php8.1-fpm sudo update-alternatives --config php

Pour CentOS/RHEL :

bash

sudo yum install php81 php81-php-fpm

Pour revenir à une version précédente :

bash

sudo update-alternatives --config php

Redémarrez le serveur Web :

bash

sudo systemctl restart apache2 # or sudo systemctl restart php8.1-fpm

Assurez-vous que Dolibarr se charge correctement et que tous les modules sont accessibles après le changement.


8. Ajuster la configuration PHP pour Dolibarr

Même avec la bonne version PHP, de mauvais paramètres peuvent entraîner des performances lentes ou des erreurs inattendues.

Modifier php.ini pour affiner ces paramètres :

ini

memory_limit = 512M upload_max_filesize = 20M post_max_size = 25M max_execution_time = 120 max_input_vars = 3000 date.timezone = "Europe/Paris" ; Or your local timezone

8.1 Activer les extensions requises

Dolibarr nécessite plusieurs extensions PHP. Utilisation php -m pour vérifier les modules actifs.

Assurez-vous que ces options sont activées :

  • pdo_mysql

  • mbstring

  • curl

  • gd

  • intl

  • json

  • fileinfo

  • xml

Activer les extensions via :

bash

sudo apt install php8.1-gd php8.1-mbstring php8.1-curl php8.1-intl

Redémarrez ensuite votre serveur Web.


9. Correction des erreurs Dolibarr causées par les modifications PHP

Voici comment résoudre les problèmes spécifiques de Dolibarr déclenchés par des incompatibilités de version PHP :

9.1 get_magic_quotes_gpc() Indéfini

Cette fonction a été supprimée dans PHP 8.0.

Fixer: Mettez à niveau Dolibarr vers au moins la version 15.x ou commentez les appels dans les modules personnalisés.


9.2 Factures ou propositions vierges

Cela est souvent dû à des versions TCPDF ou DOMPDF obsolètes qui ne sont pas compatibles avec PHP 8.

Fixer:

  • Remplacer les modèles PDF personnalisés par des modèles mis à jour

  • Mettre à niveau le lib/pdf or lib/tcpdf répertoires

  • Assurez-vous qu'aucun espace n'existe avant <?php balises dans les modèles


9.3 Échec de l'authentification de l'API

Les versions plus récentes de PHP peuvent gérer l'analyse des en-têtes de manière plus stricte.

Fixer:

  • Vérifiez que la clé API est transmise correctement

  • Confirmer que les en-têtes de type de contenu sont définis

  • Réactiver les services Web dans la configuration de Dolibarr


9.4 Modules ou menus cassés

Si les menus disparaissent ou si les modules ne se chargent pas après une mise à niveau de PHP, cela peut être dû à :

  • Syntaxe obsolète (par exemple, décalages de tableau entre accolades)

  • Constructeurs à l'ancienne dans les classes

  • Appels de fonction manquants ou modifiés

Fixer:

  • Vérifier les journaux

  • Désactiver le module problématique

  • Mettre à jour le module si une version plus récente existe

  • Contactez le développeur du module pour une mise à jour PHP 8.x


10. Comment les modules et modèles personnalisés se dégradent avec les mises à jour PHP

Le cœur de Dolibarr évolue rapidement, mais les modules personnalisés sont souvent à la traîne. Voici les problèmes courants :

10.1 Ancienne syntaxe PHP

Les modules personnalisés écrits pour PHP 5 ou 7 peuvent utiliser une syntaxe désormais obsolète.

  • create_function()

  • each()

  • Balises ouvertes courtes (<? au lieu de <?php)

  • Comparaison non stricte

Solution: Refactorisez le code en utilisant les meilleures pratiques PHP 8 et testez-le sur un serveur de test.


10.2 Constructeurs obsolètes

Les constructeurs de classe plus anciens peuvent utiliser le nom de la classe, qui n'est plus valide dans PHP 8 :

php

class MyModule { function MyModule() { ... } // Invalid in PHP 8 }

Remplacer par:

php

function __construct() { ... }

10.3 Modèles PDF avec appels obsolètes

Les modèles de factures ou de propositions PDF personnalisés utilisent souvent des méthodes ou des fonctions obsolètes qui entrent en conflit avec les versions plus récentes de DOMPDF ou TCPDF.

Solution:

  • Reconstruisez le modèle en utilisant la dernière version pdf_model.class.php structure

  • Valider toutes les variables et fonctions de sortie

  • Évitez tout écho direct ou toute déclaration imprimée en dehors du contenu mis en mémoire tampon


11. Bonnes pratiques de développement pour la compatibilité PHP

Pour ceux qui développent ou étendent Dolibarr, suivez ces bonnes pratiques pour assurer la compatibilité avec les versions PHP actuelles et futures.

Utiliser PHP 8+ en développement

Testez toujours vos modules par rapport aux dernières versions de PHP, même si la production utilise des versions plus anciennes.

Évitez les fonctionnalités obsolètes

Suivez les dépréciations à l'aide du manuel PHP ou d'outils tels que :

Utiliser les déclarations de type lorsque cela est possible

Le code de type sécurisé est plus résilient aux changements de version PHP.

php

public function calculateTotal(float $amount, int $taxRate): float

Structurer correctement les modules

Suivez le squelette du module Dolibarr et assurez-vous de déclarer :

  • Crochets

  • Permissions

  • Entrées de menu

  • Fichiers de langue

Cela garantit que votre module s'intègre proprement, quelles que soient les modifications PHP.


12. Comment pérenniser votre instance Dolibarr

Utilisez toujours les versions LTS

Restez fidèle aux versions Dolibarr étiquetées comme stable or LTS pour éviter les régressions.

Testez avant de mettre à niveau

Maintenir un environnement de rassemblement avec les prochaines versions de PHP et Dolibarr.

Annonces de compatibilité des pistes

Les journaux des modifications de Dolibarr incluent souvent des notes sur la prise en charge de PHP. Soyez attentifs à :

  • Modifications minimales de la version PHP

  • Fonctionnalités obsolètes

  • Mises à jour de base incompatibles

Automatiser les vérifications de compatibilité

Intégrez des outils d’analyse statique dans votre pipeline CI :

  • PHP Stan

  • Psaume

  • PHP_CodeSniffer (avec ensemble de règles PHPCompatibility)


13. Réflexions finales

La compatibilité PHP est une préoccupation majeure pour tous les utilisateurs de Dolibarr, des propriétaires de petites entreprises aux développeurs full stack. À mesure que Dolibarr évolue pour tirer parti des fonctionnalités PHP modernes (amélioration de la vitesse, de la sécurité et de la qualité du code), vous devez adapter votre environnement à cette évolution.

Une stratégie de compatibilité intelligente comprend :

  • Rester sur versions de Dolibarr prises en charge

  • Maintenir PHP à jour, mais pas trop loin en avant

  • Tester en profondeur dans des environnements de test

  • Mise à jour proactive des modules personnalisés

  • Suivre les meilleures pratiques de développement PHP

En maîtrisant la relation entre PHP et Dolibarr, vous assurez que votre système ERP n'est pas seulement fonctionnel et rapideMais c'est aussi résilient et prêt pour l'avenir.