Mise à jour bloquée : commonsubtotal.class.php introuvable
Pendant une mise à jour vers la 22, la 23 ou la 24, l'assistant s'arrête sur un fichier subtotals introuvable. Ce n'est pas un module externe : la copie des fichiers est incomplète.
Vous mettez Dolibarr à jour. À l’étape de migration des données, l’assistant s’arrête sur ce message :
Warning: require_once(../subtotals/class/commonsubtotal.class.php): Failed to open stream:
No such file or directory in …/compta/facture/class/facture.class.php on line 55
Il est suivi d’une erreur fatale « Failed opening required ». Le numéro de ligne est 53 en version 22, 54 en 23 et 55 en 24. Sous PHP 7, le message commence par « failed », en minuscule.
Si votre serveur n’affiche pas les erreurs, vous voyez seulement une page blanche (erreur 500) : le même message est alors dans le journal d’erreurs de PHP.
Ce n’est pas un module externe
On pense d’abord à un ancien module de sous-totaux. Ce n’en est pas un : le dossier subtotals/
fait partie de Dolibarr lui-même depuis la version 22. Les modules externes, eux, s’installent dans
custom/.
Le message dit donc deux choses :
facture.class.phpest déjà celui de la nouvelle version. C’est lui qui réclame le fichier.- Le dossier
subtotals/n’est pas arrivé sur le serveur.
Le ../ au début du chemin est normal : pendant la mise à jour, Dolibarr travaille depuis le
dossier install/, où la racine est définie comme « le dossier du dessus ».
La cause : une copie de fichiers incomplète
Les fichiers existants ont été remplacés, mais le dossier subtotals/, nouveau en version 22, n’a
pas été créé. C’est le cas par exemple après un transfert interrompu, ou si l’on n’a copié que les
fichiers modifiés. S’il manque un dossier, d’autres fichiers peuvent manquer aussi.
La solution
- Regardez sur le serveur si le dossier
subtotals/existe à la racine de Dolibarr, à côté decompta/,comm/etinstall/. - S’il manque, recopiez tout le contenu du dossier
htdocsde l’archive de la version visée par-dessus votre installation, sans supprimer votreconf/conf.phpni le dossiercustom/. - Relancez l’assistant de mise à jour (
/install/).
Ne recopiez pas seulement subtotals/ : si un dossier manque, la copie entière est douteuse.
Comment cela a été vérifié
- Vraie mise à jour d’une instance 21.0.4 vers 24.0.1 avec l’assistant, dossier
subtotals/retiré : l’étape de structure passe, l’étape de migration des données s’arrête sur ce message, ligne 55 comprise (page blanche, message dans le journal PHP). Dossier remis : « Migration finished ». - Même message en 22.0.5 (ligne 53) et en 23.0.4 (ligne 54). « failed » en minuscule sous PHP 7.4.
- Dans le code officiel, le dossier
subtotals/est absent des versions 20.0.4 et 21.0.4, et présent de la 22.0.0 à la 24.0.2.
La procédure complète, avec la sauvegarde et le retour arrière, est décrite dans Mettre à jour Dolibarr sans casse. Si la mise à jour passe mais qu’une page reste blanche ensuite, voyez Erreur 500 ou page blanche dans Dolibarr.
Si la mise à jour reste bloquée
Si le dossier est bien là et que l’assistant s’arrête toujours, le diagnostic à 90 € consiste à regarder votre installation avec vous pendant une heure, puis à vous remettre par écrit la cause et ce que coûterait la correction.