(Guide complet pour administrateurs, développeurs et utilisateurs finaux)
Note : Ce tutoriel s’appuie sur Dolibarr ERP/CRM version 2026.2 (stable) et suppose que vous disposez d’un serveur Linux (Debian 12 / Ubuntu 24.04) ou Windows Server 2022, d’un accès à la base de données et des droits d’administration.
1. Introduction : Pourquoi un « Diagnostic » dédié à Dolibarr ?
Dolibarr est un ERP / CRM open‑source très répandu, mais sa modularité (modules comptabilité, stocks, ventes, etc.) peut rendre la panne d’un composant source de confusion. En 2026, les environnements de déploiement sont de plus en plus hétérogènes : conteneurs Docker, serveurs « bare‑metal », plateformes cloud (Azure, AWS, Google Cloud) ou solutions hybrides.
Un processus de diagnostic structuré permet :
- D’identifier rapidement la cause racine d’un dysfonctionnement (erreur PHP, problème de base de données, conflit de module, etc.).
- De réduire le temps moyen de réparation (MTTR) de plusieurs heures à quelques minutes.
- D’assurer la continuité de service pour les PME/ETI qui dépendent de Dolibarr pour leurs flux critiques.
Ce guide vous propose un tutoriel pas à pas pour diagnostiquer, isoler et corriger les pannes les plus courantes de Dolibarr en 2026.
2. Principaux scénarios de panne à anticiper
| Symptomome | Déclencheur fréquent | Impact potentiel |
|---|---|---|
| Page blanche / « 500 Internal Server Error » | Mise à jour de module / changement de PHP version | Interruption totale du site |
| Erreur « Class not found » | Module désactivé ou absent | Fonctionnalité manquante (ex. : paiement) |
| Connexion à la base MySQL/MariaDB échoue | Wrong credentials, version incompatibile, timeout | Aucun accès aux données |
| Symptômes de lenteur / timeout | Requêtes SQL lourdes, cache désactivé, serveur sous‑dimensionné | Temps de réponse > 5 s |
| Erreurs de cron (jobs automatiques) | Crontab mal configuré, timezone | Émission de factures, stock non mis à jour |
| Module qui ne charge pas après migration | Table de métadonnées corrompue | Découpage de droits, perte de fonctionnalités |
| Messages « Permission denied » sur les dossiers | Droits Unix incorrects, SELinux/AppArmor | Impossible de créer/éditer des fichiers |
3. Prérequis avant de commencer le diagnostic
| Outil | Règle | Commande (Linux) |
|---|---|---|
| PHP | Version ≥ 8.1 (Dolibarr 2026.2 requiert PHP 8.1‑8.3) | php -v |
| Web server | Apache 2.4+ ou Nginx 1.23+, avec module mod_rewrite activé |
apache2ctl -M ou nginx -V |
| Database | MySQL 8.0 / MariaDB 10.6 ou supérieure | mysql --version |
| Composer | Pour les mises à jour de dépendances (facultatif) | composer --version |
| Cron | Service actif (systemctl status cron ou systemctl status crond) |
— |
| Permissions | Répertoire Dolibarr writable par le serveur web (www-data, nginx, apache) |
chmod -R 775 /var/www/dolibarr && chown -R www-data:www-data /var/www/dolibarr |
| Backup | Toujours disposer d’une sauvegarde récente (dump SQL + copie du répertoire htdocs) |
mysqldump -u root -p dbname > db.sql |
Astuce 2026 : Si vous déployez Dolibarr dans un conteneur Docker, ajoutez le flag
--restart unless-stoppedet montez les volumes./data:/var/www/dolibarrafin de préserver les données.
4. Étape 1 – Vérifier l’environnement d’exécution
4.1. Diagnostic PHP
# Affiche les informations PHP utilisées par le serveur web
php -i | grep -E 'Version|Loaded Configuration|date.timezone'
- Checklist :
PHP Version => 8.2.x(ou 8.3).- Extensions obligatoires :
pdo_mysql,gd,intl,openssl,zip,exif,fileinfo. date.timezonedoit être défini sur votre fuseau horaire (ex.Europe/Paris).
4.2. Vérifier les modules actifs
Dans le fichier conf/perso.conf.php (ou via l’interface Dolibarr > Administration > Configuration > Serveurs), assurez‑vous que les modules requis sont activés :
| Module | Fonction | Activation |
|---|---|---|
agcurl |
communications externes (API, paiement) | extension=curl |
agpgsql |
PostgreSQL (optionnel) | extension=pgsql |
aglibpdf |
génération de PDF | extension=pdf |
agmemcache |
cache HTTP | extension=memcache |
Si une extension manque, installez‑la puis redémarrez le serveur web.
apt-get install php8.2-curl php8.2-gd php8.2-intl php8.2-zip
systemctl restart apache2 # ou php-fpm
4.3. Test de connexion à la base de données
mysql -u dolibarr_user -p -h localhost dolibarr_db
Erreurs fréquentes
- Access denied → credentials erronés ou privilèges insuffisants. – Host ‘XYZ’ is blocked → le serveur MySQL est configuré avec
bind-address. Modifiezmy.cnf(bind-address = 0.0.0.0ou adresse IP autorisée).
5. Étape 2 – Analyser les logs serveur & Dolibarr
Dolibarr écrit dans dolibarr/log (ou logs/ selon la version). Les fichiers clés sont :
| Fichier | Contenu | Lecture recommandée |
|---|---|---|
errors.log |
Exceptions PHP, warnings, notices | tail -f errors.log |
cron.log |
traces des jobs CRON | cat cron.log |
install.log |
historique de l’installation | cat install.log |
5.1. Recherche d’erreurs critiques (« Fatal error », « Class not found », « Catchable fatal error »)
grep -i "Fatal\|Catchable\|Class not found" -R dolibarr/log/* | sort -u > /tmp/fatal_errors.txt
Si le fichier ne contient aucune entrée, le problème vient souvent d’un serveur HTTP trop restrictif (ex. php_admin_flag désactivée).
5.2. Le rôle du mode débogage
Ajoutez dans htdocs/conf/perso.conf.php :
$conf['debug'] = 1; // 0 = désactivé, 1 = mode debug
$conf['debugsql'] = 1; // log des requêtes SQL
Redémarrez le serveur, rechargez la page puis relisez les logs.
Tip 2026 : le debugsql est indispensable pour identifier les requêtes lentes qui ne figurent pas dans le
slow_query_logde MySQL.
6. Étape 3 – Vérifier la santé de la base de données
6.1. Vérifications MySQL« `sql
— 1. Vérifier la version
SELECT VERSION();
— 2. Inspecter la taille des tables (problème de fragmentation)
SELECT table_name, engine, rows, data_length/(1024*1024) AS mb FROM information_schema.tables WHERE table_schema=’dolibarr_db’;
— 3. Détecter les tables corrompues
SELECT table_name FROM information_schema.tables WHERE engine=’InnoDB’ AND check_table = ‘corrupt’;
*Si des tables sont marquées comme **corrompues**, exécutez immédiatement :*
```sql
ALTER TABLE `nom_de_la_table` REPAIR;
6.2. Analyse de la lenteur
Activez le slow_query_log (si non déjà présent) :
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
Inspectez les requêtes qui dépassent 2 s.
mysqldumpslow -s t -t 10 /var/log/mysql/slow.log
Solution typique : ajouter des index (ALTER TABLE ... ADD INDEX (...)) ou optimiser le code PHP qui invoque ces requêtes. —
7. Étape 4 – Diagnostiquer les problèmes de module / extensionDolibarr propose plus de 150 modules (stocks, factures, paiement, etc.). Chaque module possède son propre répertoire htdocs/<module>/.
7.1. Lister les modules désactivés
find htdocs -maxdepth 1 -type d -name "mod*" | grep -v -E 'mod_(users|hooks|core)' | xargs ls -l
Vérifiez le fichier modxxx.conf.php pour le champ enabled. Exemple :
$modconf['modstock'] = array('enabled' => 1);
7.2. Désactiver/ réactiver un module via la console
php -r "require_once('htdocs/cfg/class/PMessage.class'); $dm = new Msg('invoice'); $dm->disableModule('modinvoice');"
Ensuite, rafraîchissez l’interface d’administration pour confirmer que le module repasse à « désactivé ».
7.3. Conflit de nom de classe
Parfois, deux modules déclarent la même classe (ex. class FrontController). Le log vous affichera :
Fatal error: Class 'FrontController' already has been defined
Solution : renommez le namespace du module ou désactivez le module en conflit.
8. Étape 5 – Résoudre les problèmes de permissions et de sécurité
| Symptomome | Cause fréquente | Fix |
|---|---|---|
Permission denied lors de création d’un document PDF |
Le dossier tmp/ n’est pas écriturable |
chmod 775 /var/www/dolibarr/tmp && chown www-data:www-data /var/www/dolibarr/tmp |
Erreur mod_security bloque les requêtes POST |
ModSecurity dans son mode paranoïaque bloque l’URL contenant php |
Désactiver temporairement ou ajouter une règle SecRuleRemoveById 950125 |
Accès refusé sur /var/www/dolibarr/htdocs |
SELinux/AppArmor en enforcing | setsebool -P httpd_can_network_connect_db on ou aa-complain /etc/apparmor.d/usr.sbin.apache2 |
2026 : La plupart des déploiements Docker utilisent
docker-composeavec les optionssecurity_opt: "no-new-privileges"; assurez‑vous que le volume Docker est monté en rw (Zouzpour SELinux).
9. Étape 6 – Déployer ou restaurer à partir d’un backup
9.1. Sauvegarde automatisée ( recommandé 2026 )
#!/bin/bash
# backup_dolibarr.sh
DATE=$(date +%Y%m%d_%H%M)
BACKUP_DIR="/backups/dolibarr"
# 1. Dump SQL
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/dolibarr_$DATE.sql
# 2. Archive du code
tar -czf $BACKUP_DIR/dolibarr_code_$DATE.tar.gz -C /var/www/dolibarr htdocs
# 3. Retention 30 jours
find $BACKUP_DIR -type f -mtime +30 -delete
Ajoutez-le à cron.daily pour automatiser.
9.2. Restauration rapide
# 1. Restaurer la base
mysql -u $DB_USER -p$DB_PASS $DB_NAME < /backups/dolibarr_20260801.sql
# 2. Décompresser le code
tar -xzf /backups/dolibarr_code_20260801.tar.gz -C /var/www/dolibarr
# 3. Vérifier les permissions
chown -R www-data:www-data /var/www/dolibarr
chmod -R 775 /var/www/dolibarr/tmp /var/www/dolibarr/blankconf
10. Étape 7 – Optimisations & prévention des pannes futures
| Action | Description | Fréquence |
|---|---|---|
| Mise à jour régulière | Releases de sécurité (Dolibarr 2026.x) et des extensions PHP | Tous les 3 mois |
| Scan de vulnérabilités | Utilisez Trivy ou OWASP ZAP sur l’image Docker |
Mensuel |
| Surveillance de la charge | Grafana + Prometheus (metrics PHP-FPM, MySQL Queries_per_second) |
Continue |
| Alertes cron | Script check_dolibarr.sh qui teste l’accès à une URL interne (/index.php?main=dashboard) et envoie un email si KO |
Hebdomadaire |
| Nettoyage du cache | Supprimez régulièrement dolibarr/datacache/ si le système de cache (APCu, Redis) devient plein |
Mensuel |
| Documentation des changements | Versionnez conf/*.conf.php dans Git (ou GitLab) pour traçabilité |
À chaque modification |
11. Checklist finale – « C’est bon ? »
Après avoir passé les étapes précédentes, assurez‑vous que les points suivants sont validés :
| ✅ | Vérification |
|---|---|
| ✔️ | PHP ≥ 8.1, toutes les extensions requises activées |
| ✔️ | La connexion à la BDD fonctionne (USER/PASS, host) |
| ✔️ | Aucun Fatal error dans errors.log après activation du mode debug |
| ✔️ | Les permissions du répertoire dolibarr/tmp sont 775 et le propriétaire est l’utilisateur web |
| ✔️ | Tous les modules nécessaires sont activés dans conf/perso.conf.php |
| ✔️ | Les scripts CRON s’exécutent sans erreur (cron.log propre) |
| ✔️ | Les tests d’URL interne (/index.php?main=setup) renvoient 200 OK |
| ✔️ | La sauvegarde récente a pu être restaurée sur un serveur de test |
| ✔️ | Les métriques (CPU, RAM, IO) sont dans la fourchette attendue (ex. < 40 % RAM, < 500 ms temps de réponse) |
Si tout est coché, votre instance Dolibarr devrait fonctionner de façon stable pour les mois à venir.
12. Conclusion
Diagnostiquer Dolibarr en 2026 ne consiste plus simplement à lire les messages d’erreur ; il s’agit d’une méthodologie complète qui mêle :
- Système (PHP, base de données, permissions).
- Application (modules, configuration, logs).
- Opérations (monitoring, backup, mise à jour).
En suivant scrupuleusement le tutoriel pas à pas présenté ci‑dessus, vous serez en mesure de :
- Isoler rapidement la cause d’une panne.
- Appliquer la correction adéquate (patch, re‑indexation, ajustement de configuration).
- Prévenir la récurrence du problème grâce à des contrôles automatisés. N’hésitez pas à documenter chaque incident dans votre système de tickets (ex. : GitLab Issues, Jira) en joignant les logs et le traceback exact, afin de créer une base de connaissances reusable pour votre équipe.
Bonne résolution de pannes ! 🚀 —
Article rédigé par l’équipe de support Dolibarr – version 2026.2 – pour les utilisateurs francophones.