Il y a quelque temps, lors d’une MAJ de ma version Beta, l’application ne pouvait plus s’ouvrir car ça me plantait systématiquement le Démon.
J’ai donc dû quitter le programme Béta car je me faisait engueuler par ma femme et les enfants
Mais hier j’ai eu envie de repasser en Béta car je suis les évolutions et ça me donne envie…
Après installation, même chose avec la dernière Béta: plantage immédiat du Démon dès que je lance l’appli sur un des téléphones.
Avant de me faire pourrir par la famille, je suis repassé en stable afin que tout le monde puisse utiliser JC.
J’ai juste noté ce message dans le log JeedomConnet (pas en debug) lors du plantage:
PHP Fatal error: Cannot redeclare React\Promise\Timer
eject() (previously declared in /var/www/html/plugins/JeedomConnect/3rdparty/vendor/react/promise-timer/src/functions.php:76) in /var/www/html/plugins/TvDomSamsung/3rdparty/vendor/ratchetphp/react/promise-timer/src/functions.php on line 65
[2021-06-22 22:55:13][ERROR] : Erreur sur la fonction deamon_start du plugin : Vous devez attendre au moins 45 secondes entre deux lancements du démon. Dernier lancement : 2021-06-22 22:54:43
[2021-06-22 22:55:24][ERROR] : Erreur sur la fonction deamon_start du plugin : Vous devez attendre au moins 45 secondes entre deux lancements du démon. Dernier lancement : 2021-06-22 22:54:43
PHP Fatal error: Cannot redeclare React\Promise\Timer
eject() (previously declared in /var/www/html/plugins/JeedomConnect/3rdparty/vendor/react/promise-timer/src/functions.php:76) in /var/www/html/plugins/TvDomSamsung/3rdparty/vendor/ratchetphp/react/promise-timer/src/functions.php on line 65
Je suppose qu’il y a un soucis avec mon plugin TvDomSamsung???
Mais pourquoi ça marche avec la stable et pas avec les Bétas?
Il me semble que c’est un problème lié à la gestion des extensions de jeedom.
Plusieurs plugin ne peuvent pas utiliser la même lib.
Peut être qu’un dev Jeedom pourrait t’en dire plus…
On peut utiliser la meme, justement si c’est exactement la « même » en utilisant un « require once » pour éviter les redeclaration.
En tout cas avec une compatibilité ascendante et descendante à 100%. En d’autres termes si la signature des méthodes est identique.
Le problème est que comme chaque plug-in va faire son require, c’est le premier qui arrive va charger « sa » version et pour le deuxième Php ne va rien faire car déjà chargée.
Mais si après dans ta class tu appelles une méthode qui n’existe pas ou qui n’a pas la même signature que la version précédemment chargée, ça explose.
Donc il faut essayer de s’aligner sur la version de la lib a utiliser entre plugin ou s’aligner sur celle du core pour certaines pour éviter les conflits.
Oui effectivement ça fonctionne parfaitement en désactivant le plugin Samsung!
Bon ben du coup je ne cherche pas plus loin et j’ai installé une alternative au plugin qui pose soucis avec la Béta JC.
Merci @jared-94 et bonne soirée!