Dolibarr et hébergement : erreurs fréquentes et solutions pour mieux piloter

Guide pratique pour un déploiement stable et optimisé


1. Introduction

Dolibarr est un ERP / CRM open‑source très populaire pour les petites et moyennes entreprises. Son installation sur un serveur web (Apache/Nginx, PHP, MySQL/MariaDB) est généralement simple, mais plusieurs pièges peuvent appearances lorsqu’on le place en production, surtout en matière d’hébergement.
Cet article passe en revue les erreurs les plus fréquentes rencontrées par les admins et proposes des solutions concrètes pour les éviter ou les corriger.


2. Configuration serveur de base

Erreur fréquente Description Solution rapide
Version PHP trop ancienne Dolibarr nécessite PHP ≥ 7.2 (ou 8.x selon la version). Vérifier avec php -v. Si < 7.2, activer la mise à jour via le dépôt du serveur ou passer à un serveur plus récent (ex. Ubuntu 22.04, Debian 12).
Modules PHP manquants Extension intl, gd, zip, pdo_mysql etc. absentes. Installer les paquets correspondants : sudo apt install php-intl php-gd php-zip php-mbstring php-mysql php-xml.
open_basedir ou safe_mode bloquant l’accès aux dossiers Limites de sécurité qui interdisent à Dolibarr d’écrire dans /docs, /img, /import Modifier le fichier de configuration PHP (php.ini) :
open_basedir = /var/www/dolibarr:/tmp/
ou désactiver temporairement pour le vhost.
Permisssions de répertoire Les dossiers www/files, product annexes, dolibarr sont en lecture‑seule → erreurs d’import/export. sudo chown -R www-data:www-data /chemin/vers/dolibarr
sudo find /chemin/vers/dolibarr -type d -exec chmod 755 {} \;
sudo find /chemin/vers/dolibarr -type f -exec chmod 644 {} \;
sudo chmod 770 /chemin/vers/dolibarr/files /chemin/vers/dolibarr/bd (ou plus restrictif selon le serveur).
MySQL/MariaDB sansutf8mb4 Caractères accentués et emojis non supportés → perte de données. Créer la base avec CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ou modifier my.cnf :
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci.


3. Installation / Mise à jour

3.1. Utilisation du script d’installation officiel

  • Erreur : Lancer le script sans droits d’écriture sur le répertoire de destination → “Permission denied”.
  • Solution : Exécuter le script avec un utilisateur disposant des droits d’écriture (ex. sudo -u www-data php install.php), ou créer le répertoire à la main et ajuster les permissions avant l’appel.

3.2. Mise à jour sans réinitialiser les données

  • Erreur : Après mise à jour, les menus ne s’affichent plus ou les champs personnalisés disparaissent.
  • Solution :

    1. Sauvegarder la base (mysqldump) et le répertoire files.
    2. Copier les nouveaux fichiers hors du répertoire htdocs (ne pas écraser conf/inc_params.php).
    3. Lancer /install.php uniquement si la version précédente était ancienne de plus de 2 majorations (ex. 9.0 → 11.0).
    4. Vérifier les tables ASMPL_ qui peuvent nécessiter une réparation (php bin/dolibarr-maintenance.php).

3.3. Migration d’une version communautaire vers une version “cloud” (Dolibarr Online)

  • Erreur : Incompatibilité des URLs de webservice REST avec les routes internes.
  • Solution : Ajouter un fichier .htaccess ou config nginx pour réécrire les requêtes /api/ vers le bon virtual host, ou désactiver la fonctionnalité REST dans conf/inc_crypted.php.


4. Hébergement partagé vs dédié vs cloud

Type d’hébergement Problèmes rencontrés Astuces / Solutions
Hébergement partagé (OVH, 1&1, Infomaniak) – PHP‑FPM non disponible → performance médiocre.
– Limite de upload_max_filesize (2 Mo) insuffisante pour les annexes.
• Passer à un plan « PHP‑FPM » ou à un VPS.
• Modifier php.ini via le php.ini du répertoire ou via le panneau de contrôle (upload_max_filesize = 20M).
VPS / Serveur dédié – Oublier de désactiver mod_security → faux positifs de blocage d’appels AJAX.
– Firewall bloquant le port 3306 ou 8080.
• Configurer mod_security : SecRuleEngine Off pour le répertoire /dolibarr/.
• Ouvrir les ports nécessaires dans ufw (ufw allow 80,443/tcp; ufw allow 3306/tcp).
Docker / Docker‑Compose – Montages de volumes incorrects → perte de persistance des annexes.
– Mauvaises variables d’environnement (DOLIBARR_...).
• Utiliser docker-compose.yml officiel :
volumes:
- ./files:/var/www/dolibarr/files
- ./dbdata:/var/lib/mysql
• Ajouter les variables DOLIBARR_USEMYSQL=1 et DOLIBARR_MYSQL_HOST=db si vous utilisez une base séparée.
Hébergement cloud (PaaS) – Restrictions de durée d’exécution des scripts (timeout 30 s).
– Accès limité aux logs.
• Passer à un plan visiteur ou configurer un cron externe (ex. GitHub Actions) pour les tâches périodiques.
• Exporter les logs (syslog) depuis le service de logs (ELK, Papertrail).


5. Problèmes courants côté application

5.1. Messages d’erreur “Unable to connect to MySQL”

  • Cause : L’utilisateur MySQL n’a pas les droits SELECT, INSERT, UPDATE, DELETE sur la base ou le mot de passe est erroné.
  • Fix :
    GRANT ALL PRIVILEGES ON dolibarr.* TO 'dolibarr_user'@'%' IDENTIFIED BY 'StrongPass!';
    FLUSH PRIVILEGES;

5.2. “Undefined index” / “Undefined variable” dans les logs

  • Cause : Un plugin tiers ou un thème non compatible avec la version courante.
  • Fix : Désactiver temporairement le plugin (/dolibarr/bllx/...) et mettre à jour le plugin ou signaler le bug sur le tracker.

5.3. Problèmes d’affichage (CSS/JS bloqués)

  • Cause : URL absolues mal générées derrière un reverse proxy ou un CDN.
  • Fix : Ajouter dans conf/inc_params.php :
    $sServerName = 'https://monentreprise.fr';
    $use_ç = true; et configurer le serveur (ex. proxy_set_header Host $host;).

5.4. “Transaction aborted” lors d’import XML de grandes quantités

  • Cause : Timeout MySQL (max_allowed_packet) ou dépassement de memory_limit.
  • Fix : Modifier my.cnf :
    max_allowed_packet=64M
    innodb_log_file_size=64M
    et/ou augmenter memory_limit = 512M dans php.ini.


6. Tips de performance & bonnes pratiques

Astuce Effet Comment mettre en place
Activez le cache des templates Réduction du temps de rendu (≈ 30 %). Dans dkphp.conf : $cfg['CACHE_TEMPLATES'] = 1;
Utilisez APCu ou OPcache Accélération du PHP. opcache.enable=1 opcache.memory_consumption=128 opcache.max_accelerated_files=5000
Séparez les annexes sur un disque dédié Limite les I/O bloquantes. Créez un volume LV ou un disque EBS et montez‑le sur /var/www/dolibarr/files.
Planifiez les tâches cron dans un user dédié Sécurité + visibilité des logs. Créer cron.dolibarr avec */5 * * * * www-data /usr/bin/php /var/www/dolibarr/dolibarr.php cron_run
Activez le “lazy loading” des listes Moins de requêtes SQL simultanées. Modifier $cfg['USE_SMARTY_LIGHT ‘ = true; (ou désactiver le debug mode).


7. Checklist de déploiement production

  1. PHP ≥ 8.1, extensions : intl, gd, zip, mbstring, xml, pdo_mysql.
  2. Base de données MySQL 8 ou MariaDB 10.6 en utf8mb4.
  3. Permissions : www-data propriétaire de files, img, modules, pics.
  4. HTTPS obligatoire – configurer un certificat Let’s Encrypt ou un certificat interne.
  5. ModSecurity désactivé ou configuré en mode « Detection » uniquement pour le sous‑dossier /dolibarr/.
  6. Sauvegarde automatisée :

    • Base : mysqldump --single-transaction (quotidien).
    • Files : rsync -a --delete (incremental).
  7. Monit / Nagios : vérifier que les processus PHP‑FPM ne dépassent pas 80 % de la RAM.
  8. Logs : error_log dans dolibarr.log, rotation via logrotate.


8. Conclusion

Dolibarr est une solution ERP très souple, mais son bon fonctionnement repose sur une configuration serveur adéquate, des permissions correctes, ainsi que sur la veille des versions PHP/DB. En anticipant les erreurs décrites ci‑dessus et en appliquant les solutions proposées, vous éviterez les pannes fréquentes, améliorerez la sécurité et offrirez à vos utilisateurs une expérience fluide.

Bonus : pour les équipes qui souhaitent réduire le temps d’administration, pensez à encapsuler l’ensemble (PHP, MySQL, Dolibarr) dans un Docker‑Compose ou un Ansible playbook. Vous disposerez alors d’un environnement reproductible, versionnable et facilement scalable.

Bonne configuration ! 🚀


Sources : Documentation officielle Dolibarr, forums de la communauté, articles de blog sur l’optimisation PHP‑FPM, guides de sécurité Apache/Nginx.

Publications similaires