Bienvenue, Invité
Nom d'utilisateur : Mot de passe : Se souvenir de moi
  • Page :
  • 1
  • 2

SUJET : [RESOLU] problème migration 7.0.3 vers 8.0.4

[RESOLU] problème migration 7.0.3 vers 8.0.4 il y a 9 mois 2 semaines #105086

  • julio13
  • Portrait de julio13
  • Hors ligne
  • Expert Boarder
  • Messages : 95
  • Remerciements reçus 10
  • Karma: 0
Bonjour,

Après avoir réalisé des essais de la version 8.0.4 de Dolibarr en local, qui se sont révélés concluants, je viens de procéder à la migration manuelle de la V7.0.3 vers la V8.0.4, en production.

Lors de la migration des tables, j’ai obtenu le message suivant (répété plusieurs fois). ...
Warning: Division by zero in /home/clients/<mon_rep_client>/web/dolibarr/htdocs/core/class/stats.class.php on line 389
Warning: Division by zero in /home/clients/<mon_rep_client>/web/dolibarr/htdocs/core/class/stats.class.php on line 391

… j’ai poursuivi l’installation et tout semblait normal, sauf que lorsque l’on lance les ‘statistiques’ dans le module « adhérent » le message réapparaît.

image1.png


dans ‘Outils d’administration’ => Infos Web Serveur, je constate également le message suivant :
Warning: exec() has been disabled for security reasons in /home/clients/<mon_rep_client>/web/dolibarr/htdocs/admin/system/web.php on line 65

image2.png


il semble que le fichier web.php ne se soit pas exécuté correctement et que l’identifiant ‘id’ du serveur (utilisateur/groupe n’ait pas été défini) car le paramètre : Serveur web utilisateur/groupe (real, 'id' command) ne comporte aucune valeur, alors qu’en local l’utilisateur/groupe est « www-data:www-data »

image_web.php.png


image3.png


image4.png


Comment remédier au problème ? En relançant l’installation ?

Dolibarr donne (configuration infomaniak)
apache ??? (rien concernant la version)
OS : debian 4.9.0.6
PHP 7.0
MariaDB 5.6.35

configuration locale lors des test :
apache 2.4.25/debian
OS : debian 4.9.0.8
PHP 7.0
MariaDB 5.5.5-10.1.37
Dernière édition: il y a 9 mois 4 jours par julio13.
L'administrateur a désactivé l'accès en écriture pour le public.

problème migration 7.0.3 vers 8.0.4 il y a 9 mois 1 semaine #105108

  • julio13
  • Portrait de julio13
  • Hors ligne
  • Expert Boarder
  • Messages : 95
  • Remerciements reçus 10
  • Karma: 0
Après avoir activé la fonction exec() comme préconisé par l'hébergeur, l'erreur serveur web a disparue, voilà ce que donne l'id:

Serveur web utilisateur/groupe (real, 'id' command)uid=63837(uid63837) gid=10000(ldapusers) groups=10000(ldapusers)

par contre l'erreur dans le module "statistiques adhérents" est toujours là...
L'administrateur a désactivé l'accès en écriture pour le public.

problème migration 7.0.3 vers 8.0.4 il y a 9 mois 1 semaine #105289

  • julio13
  • Portrait de julio13
  • Hors ligne
  • Expert Boarder
  • Messages : 95
  • Remerciements reçus 10
  • Karma: 0
UP ?

J'ai procédé à une réinstallation, mais lors de la migration des bases le message d'erreur apparaît toujours:

bug_migration_base.png


D'après l'hébergeur ce n'est pas un problème de code Dolibarr ni de version de PHP, mais un problème de données dans la base (div/0)
Pourtant lors de l'installation en local, la migration de la base et les test sont tous OK !

Une idée ?
L'administrateur a désactivé l'accès en écriture pour le public.

problème migration 7.0.3 vers 8.0.4 il y a 9 mois 1 semaine #105305

  • julio13
  • Portrait de julio13
  • Hors ligne
  • Expert Boarder
  • Messages : 95
  • Remerciements reçus 10
  • Karma: 0
Bjr,

je continue mes recherches, mais sans succès...
l'erreur est générée par le fichier htdocs/core/class/stats.class.php => function_getAllByYear
j'ai vérifié, les 2 fichiers sont strictement identiques en local sur ma base de test et sur le serveur infomaniak. le problème vient donc du calcul des données. Ce que je ne comprends pas c'est le pourquoi, puisque les bases sont strictement identiques. En effet, après avoir ré-installé une copie de la V8.0.4 de Dolibarr pour test sur le serveur ( avec toujours le même message d'erreur lors de la migration de la base, alors que localement tout se passe normalement) j'ai 'injecté la base de donnée locale qui est OK, dans la base de test sur le serveur, et malgré cela l'erreur persiste.
Tout se passe comme si le serveur n'interprétait pas la fonction function_getAllByYear de la même manière que localement.
lignes concernées 389 et 391

function_getAllByYear.png


mes compétences en PHP sont trop limitées, quelqu'un peut m'aiguiller ?

A moins que le problème soit lié à la configuration du serveur: MariaDB notamment qui est dans une version supérieure....

config:
PHP 7.0.33 en local et PHP 7.0.32 sur le serveur
MariaDB 5.5.5-10.1.37 en local et MariaDB 5.6.35 sur le serveur
Dernière édition: il y a 9 mois 1 semaine par julio13.
L'administrateur a désactivé l'accès en écriture pour le public.

problème migration 7.0.3 vers 8.0.4 il y a 9 mois 1 semaine #105359

  • yves57
  • Portrait de yves57
  • Hors ligne
  • Gold Boarder
  • Messages : 713
  • Remerciements reçus 144
  • Karma: 11
Bonjour,
$row->total et $row->avg doivent être nuls. Ce sont des résultats d'une requête SQL.
Active les log de Dolibarr depuis les modules.
Moi, j'y trouve cette requête :
2019-01-14 12:06:41 DEBUG   127.0.0.1       CommandeStats::_getAllByYear
2019-01-14 12:06:41 DEBUG   127.0.0.1       sql=SELECT date_format(c.date_commande,'%Y') as year, COUNT(*) as nb, SUM(c.total_ht) as total, AVG(total_ht) as avg FROM llx_commande as c WHERE  c.fk_statut > 0 AND c.entity IN (1) GROUP BY year ORDER BY year DESC
L'administrateur a désactivé l'accès en écriture pour le public.

problème migration 7.0.3 vers 8.0.4 il y a 9 mois 1 semaine #105374

  • julio13
  • Portrait de julio13
  • Hors ligne
  • Expert Boarder
  • Messages : 95
  • Remerciements reçus 10
  • Karma: 0
@yves57
merci pour ta réponse et voici ce que donne dolibarr. log

sur le serveur:
AdherentStats::_getAllByYear
sql=SELECT date_format(p.dateadh,'%Y') as year, count(*) as nb, sum(subscription) as total, avg(subscription) as avg FROM llx_subscription as p, llx_adherent as m WHERE m.statut != 0 AND p.fk_adherent = m.rowid AND m.entity IN (1) GROUP BY year ORDER BY year DESC

en localhost:
AdherentStats::_getAllByYear
sql=SELECT date_format(p.dateadh,'%Y') as year, count(*) as nb, sum(subscription) as total, avg(subscription) as avg FROM llx_subscription as p, llx_adherent as m WHERE m.statut != 0 AND p.fk_adherent = m.rowid AND m.entity IN (1) GROUP BY year ORDER BY year DESC

je constate que m.statut !=0 et non >1 comme chez toi. Par contre je ne vois pas l'origine du problème, et notamment pourquoi l'interprétation des résultats est différente en local et sur le serveur, puisque à priori les bases (donc la valeur des champs) sont identiques et que les requêtes du fichier log sont strictement identiques.... :angry:
Dernière édition: il y a 9 mois 1 semaine par julio13.
L'administrateur a désactivé l'accès en écriture pour le public.

problème migration 7.0.3 vers 8.0.4 il y a 9 mois 1 semaine #105383

  • yves57
  • Portrait de yves57
  • Hors ligne
  • Gold Boarder
  • Messages : 713
  • Remerciements reçus 144
  • Karma: 11
La seule explication que je vois est que sur l'une des années, 2019 au hasard, le montant des "subscription" est nul.
L'administrateur a désactivé l'accès en écriture pour le public.

problème migration 7.0.3 vers 8.0.4 il y a 9 mois 1 semaine #105385

  • wdammak
  • Portrait de wdammak
  • Hors ligne
  • Gold Boarder
  • Messages : 215
  • Remerciements reçus 23
  • Karma: -1
Essai de désactiver/activer le module concerné
L'administrateur a désactivé l'accès en écriture pour le public.

problème migration 7.0.3 vers 8.0.4 il y a 9 mois 1 semaine #105386

  • julio13
  • Portrait de julio13
  • Hors ligne
  • Expert Boarder
  • Messages : 95
  • Remerciements reçus 10
  • Karma: 0
@yves57
j'ai balayé toutes les cotisations, pour commencer. Effectivement, pour un adhérent le champ 'libellé de cotisation' ,n'était pas renseigné, mails il ne s'agit pas d'un champ date. De plus après correction, le problème persiste et qui plus est le même oubli sur la base locale ne provoque pas l'erreur...

@wdammak
module adhérent désactivé et réactivé sans effet.
Dernière édition: il y a 9 mois 1 semaine par julio13.
L'administrateur a désactivé l'accès en écriture pour le public.

problème migration 7.0.3 vers 8.0.4 il y a 9 mois 1 semaine #105390

  • wdammak
  • Portrait de wdammak
  • Hors ligne
  • Gold Boarder
  • Messages : 215
  • Remerciements reçus 23
  • Karma: -1
essai de vérifier la structure de ta base avec
/install/check.php?testget=ok
L'administrateur a désactivé l'accès en écriture pour le public.
Cet utilisateur a été remercié pour son message par: julio13

problème migration 7.0.3 vers 8.0.4 il y a 9 mois 1 semaine #105420

  • julio13
  • Portrait de julio13
  • Hors ligne
  • Expert Boarder
  • Messages : 95
  • Remerciements reçus 10
  • Karma: 0
@wdammak

merci pour la manip; tout c'est déroulé normalement et la base est Ok mais le warning au lancement des stats cotisations/adhérents demeure.
J'avais fait une sauvegarde de la base non compressée et téléchargé le fichier pour l'analyser, notamment 'llx_adherents' entre autres et je n'ai rien trouvé d'anormal dans les données...donc c'est toujours un mystère pour moi.
Dernière édition: il y a 9 mois 1 semaine par julio13.
L'administrateur a désactivé l'accès en écriture pour le public.

problème migration 7.0.3 vers 8.0.4 il y a 9 mois 5 jours #105491

  • wdammak
  • Portrait de wdammak
  • Hors ligne
  • Gold Boarder
  • Messages : 215
  • Remerciements reçus 23
  • Karma: -1
dans ce cas tu vas au fichier /htdocs/core/class/stats.class.php à la ligne 387

et tu remplaces les 5 lignes par ce code :
				if($i>0 && $row->nb>0) $result[$i-1]['nb_diff'] = ($result[$i-1]['nb'] - $row->nb) / $row->nb * 100;
				$result[$i]['total'] = $row->total;
				if($i>0 && $row->total>0) $result[$i-1]['total_diff'] = ($result[$i-1]['total'] - $row->total) / $row->total * 100;
				$result[$i]['avg'] = $row->avg;
				if($i>0 && $row->avg>0) $result[$i-1]['avg_diff'] = ($result[$i-1]['avg'] - $row->avg) / $row->avg * 100;
L'administrateur a désactivé l'accès en écriture pour le public.
Cet utilisateur a été remercié pour son message par: julio13

problème migration 7.0.3 vers 8.0.4 il y a 9 mois 5 jours #105493

  • julio13
  • Portrait de julio13
  • Hors ligne
  • Expert Boarder
  • Messages : 95
  • Remerciements reçus 10
  • Karma: 0
@wdammak

Je suis frileux pour modifier le code en production, sachant que le même code ne produit pas d'erreur en local. Je pense à un problème de configuration du serveur. J'attends une réponse de mon hébergeur sur ce point.
L'administrateur a désactivé l'accès en écriture pour le public.

problème migration 7.0.3 vers 8.0.4 il y a 9 mois 5 jours #105494

  • wdammak
  • Portrait de wdammak
  • Hors ligne
  • Gold Boarder
  • Messages : 215
  • Remerciements reçus 23
  • Karma: -1
vous pouvez faire une copie du fichier à mettre à coté
de toute façon il y a rien de spécial, juste s'assurer que le nombre de la division n'est pas zéro
L'administrateur a désactivé l'accès en écriture pour le public.
Cet utilisateur a été remercié pour son message par: julio13

problème migration 7.0.3 vers 8.0.4 il y a 9 mois 4 jours #105513

  • julio13
  • Portrait de julio13
  • Hors ligne
  • Expert Boarder
  • Messages : 95
  • Remerciements reçus 10
  • Karma: 0
@wdammak

effectivement le message à disparu, Mais si je comprends le pourquoi (il ne peut plus y avoir de message concernant une div/0 puisque on ne prend en compte le résultat que si total et avg sont >0), comment se fait-il qu'avec le code original il n'y ai pas de 'warning' en local, lors de mes test. A moins, que le paramétrage en local fasse que mysql désactive les 'warnings', et que sur le serveur ce ne soit pas le cas.

Bref, j'ai encore appris quelque chose...
L'administrateur a désactivé l'accès en écriture pour le public.
  • Page :
  • 1
  • 2