Probleme suite upgrade 4.4.3 et php >= 8.2

Bonjour, j’utilise le plugin enphasesecur depuis un moment et suite à une upgrade debian 11, php 8.3 et jeedom 4.4.3, impossible de lancer le daemon du plugin, j’obtiens l’err :

Erreur sur la fonction deamon_start du plugin : Non-static method enphasesecur::CreaEquip() cannot be called statically

j’ai relancé une install de dépendances, le log enphasesecur_update est clean.
Il semblerait que ce soit une limitation php 8.*
php 7.* semble plus permissif.

merci pour votre aide !

Bonsoir,
Oui, c’est php 8 le coupable.
La fonction CreaEquip est déclarée comme cela :

Il suffit d’ajouter static dans sa déclaration.

public static function CreaEquip

Comme vous êtes dans une configuration non supportée, vous devriez pouvoir le faire vous même en attendant que le dev du plugin fasse une passe compatibilité php8 sur son code.

C’est déjà ce que j’ai répondu sont mon github :wink: ça me rassure ^^

J’espère que cette modif sera compatible en php7 par contre…

Oui bien sur.

Étonnant d’avoir php 8 avec debian 11.

Antoine

Oui, bizarre, j’ai du PHP 7.4.33 sur ma Debian 11 à jour.
J’ai des plugins incompatibles PHP 8, c’est pour cela que je n’ai pas encore migré en Debian 12 d’ailleurs …

Bonjour à tous,
merci pour vos réponses.

j’ai effectivement remplacé « public function CreaEquip » par « public static function CreaEquip » dans le fichier core/class/enphasesecur.class.php et le plugin semble marcher à nouveau.

J’ai mis les log en DEBUG et je n’ai aucune erreur.

concernant le php8, il est écris sur le site de jeedom dans le CHANGELOG de la 4.4.1 :

  • Prise en charge de PHP 8.
  • Vérification de la version minimale du core requise avant installation ou mise à jour d’un plugin.
  • Ajout d’un bouton Assistance sur la page de configuration des plugins (Création automatique d’une demande d’aide sur le forum).

J’ai donc installé un php 8.1 sur ma debian 11 en parallèle de la 7.4.
Le composer m’a alors remonté le souci suivant :

Problem 1
- symfony/http-client[v7.0.0, …, v7.0.6] require php >=8.2 → your php version (7.4.33) does not satisfy that requirement.
- Root composer.json requires symfony/http-client ^7.0 → satisfiable by symfony/http-client[v7.0.0, …, v7.0.6].

j’ai donc upgrade en 8.3… voila :slight_smile:

cddu33 (merci pour ton travail !) plusieurs plugin que j’utilise ont également le meme genre de probleme… je pense que l’adoption de php8 va se faire doucement au fur et à mesure des MAJ de la 4.4

bonne journée à tous.

Je me suis aussi retrouvé avec du PHP 8 et + en ayant installé PHP 7.4 avant de faire la mise à jour vers Jeedom 4.4.3…

Côté plugin enphasesecure, le message concernant le manque de static se retrouve aussi sur la function xcron15x → j’ai ajouté le static à la main, et ça semble ok (en attendant une mise à jour offcielle).

J’ai un autre message généré dans le log http à chaque lecture de la passerelle Enphase :

[Wed Apr 10 08:24:34.420231 2024] [php7:warn] [pid 5039] [client 127.0.0.1:34428] PHP Warning: A non-numeric value encountered in /var/www/html/vendor/symfony/expression-language/Node/BinaryNode.php on line 144

Des idées?
Ca n’empêche visiblement pas le fonctionnement du plugin ,mais ça bombarde le log … et risque de masquer des messages + importants…

visiblement ton jeedom utilise toujours le PHP7,
dans ton log tu as : « [php7:warn] »

Pour apache il faut :
a2dismod php7.4
a2enmod php8.x
et restart apache.

il faut également choisir dans ton OS la bonne version de php, tu peux le faire en command line :
sudo update-alternatives --config php

Ok, je tente le saut à 8.3…

Du coup, ça m’a l’air pire :

[Wed Apr 10 08:51:33.652326 2024] [php:error] [pid 1055] [client 127.0.0.1:43512] PHP Fatal error: Uncaught TypeError: Unsupported operand types: float - string in /var/www/html/vendor/symfony/expression-language/Node/BinaryNode.php:144\nStack trace:\n#0 /var/www/html/vendor/symfony/expression-language/ExpressionLanguage.php(81): Symfony\Component\ExpressionLanguage\Node\BinaryNode->evaluate()\n#1 /var/www/html/core/php/utils.inc.php(1018): Symfony\Component\ExpressionLanguage\ExpressionLanguage->evaluate()\n#2 /var/www/html/core/class/jeedom.class.php(1397): evaluate()\n#3 /var/www/html/plugins/virtual/core/class/virtual.class.php(392): jeedom::evaluateExpression()\n#4 /var/www/html/core/class/cmd.class.php(1917): virtualCmd->execute()\n#5 /var/www/html/core/class/eqLogic.class.php(678): cmd->event()\n#6 /var/www/html/plugins/enphasesecur/core/php/jeeenphasesecur.php(279): eqLogic->checkAndUpdateCmd()\n#7 {main}\n thrown in /var/www/html/vendor/symfony/expression-language/Node/BinaryNode.php on line 144

peut-etre un probleme avec ton composer.

cd /var/www/html
composer check-platform-reqs (tu peux le run en root malgré le warning)

c’est tout en success ?

j’ai également run ca pdt mon process d’upgrade :

cd /var/www/html
composer update --no-interaction --no-plugins --no-scripts --no-ansi --no-dev --no-progress --optimize-autoloader --with-all-dependencies --no-cache

à voir si ca peut aider…

1 « J'aime »

Effectivement, il y a des missings :

Checking platform requirements for packages in the vendor dir
ext-ctype 8.3.4 success
ext-curl 8.3.4 success
ext-date 8.3.4 success
ext-dom n/a sabre/dav requires ext-dom () sabre/dav requires ext-dom () missing
ext-fileinfo 8.3.4 success
ext-iconv 8.3.4 success
ext-json 8.3.4 success
ext-mbstring 8.3.4 success
ext-pcre 8.3.4 success
ext-simplexml n/a sabre/dav requires ext-simplexml () sabre/dav requires ext-simplexml () missing
ext-spl 8.3.4 success
ext-xmlreader n/a sabre/xml requires ext-xmlreader () sabre/xml requires ext-xmlreader () missing
ext-xmlwriter n/a sabre/xml requires ext-xmlwriter () sabre/xml requires ext-xmlwriter () missing
lib-libxml 2.9.14 success
php 8.3.4 bacon/bacon-qr-code requires php ([[>= 5.4.0.0-dev < 6.0.0.0-dev] || [>= 7.0.0.0-dev < 8.0.0.0-d ev]]) bacon/bacon-qr-code requires php (^5.4|^7.0) failed

→ du coup, j’ai corrigé tout ça en installant php-xml qui était manquant…

Reste la dernière ligne, mais ne concerne pas enphase-secure.

Merci!

PR créé sur ton github.

Poussé sur la beta ce soir