Bonjour
Suite à plusieurs message log du type:
0198|PHP Deprecated: preg_match_all(): Passing null to parameter #2 ($subject) of type string is deprecated in /var/www/html/core/class/jeeObject.class.php on line 137
et bien d’autre (voir ici) qui ne sont pas bloquantes mais avec jeedom 4.5 sous débian 12 PHP8, j’ai chercher sur le forum et poser la question, ce qui m’a permis de recevoir beaucoup de pertinence dans ma recherche pour corriger les petits bug dans ma prod jeedom qui est là de mise à jours en mise à jours depuis 3 ans. Merci @Mips
Ici juste pour aider et apporter quelque règles simple mais qui m’ont pris un peu de temps, 1h/jour/5 jours par semaines avec mon café.
Une des règles principale, c’est de toujours s’habituer à utiliser l’outil testeur d’expression et ce pour n’importe quoi, exemple:


Comme vous pouvez le voir dans la premier image: attention il doit y avoir un soucis, oui un soucis mais cela n’est pas bloquant et cela fonctionne quand même, mais a partir de PHP8 le système vous avertis qu’il n’est pas content de la syntaxe et en corrigeant par de l’encapsulage (*****) le résultat est propre et il est content
.
Remarquer dans la 3eme image même la valeur est encaplusé (4).
Donc déjà j’ai repris tous mes scénarios qui fonctionnaient bien mais qui ont mérités un
lifting pour coller au PHP8.
Donc à faire à chaque fois pour les si, les dans, les A etc…
Autre exemple pour celle ci:
0000|PHP Deprecated: preg_match_all(): Passing null to parameter #2 ($subject) of type string is deprecated in /var/www/html/core/class/cmd.class.php on line 2499
J’ai trouvé aujourd’hui par supposition en faisant une commande via alexa ouvre le volet du séjour, et j’ai surveillé les logs et bingo elle est apparu au même moment.
Donc testeur d’expression sur mon scénario de la condition si:
"# [MAISON][Echo Pop - Marc][Dernier dialogue Réponse]#" matches "/(volet)/"
Il manquait l’encapsulage mais cette fois de type guillemet pour que php8 puisse avoir à mangé dans le string
et pas un null ou ""
Dans un 2eme temps: les commandes infos dans des virtuels ou des équipements physique:
- Si lors d’un reboot de jeedom ou si cde info jamais ou plus utilisé et donc sans value, cela pollue les logs et php8 fait du bruit car il n’a aucune valeur de référence à se mettre sous la dent, donc il met null ou
"".
Pour cela j’avais commencé à passer en revu toute mes commandes et les actionner pour que les cde infos s’affichent et puis j’ai demandé à IA fait moi un code ((voir ici) mais attention de bien lire avant de s’en servir.
Dans un 3eme temps j’ai demandé à IA de corriger mes deux 3 blocs codes scénarios et ceux de mes htmldysplay et là il colle à PHP8 et jeedom, ils sont content.
Dans un 4eme temps, j’ai supprimé un maximum de cron 1, 5 etc pour passer par des déclencheurs sans que cela charge et appel les scénarios concernés trop souvent.
Maintenant j’ai moins de charge et un swap à 100% libre
Évidement à chaque création de cde, de scénario, de html, designs, ect, si des messages arrivent, il faut nettoyer avant de paniquer, ce qui m’a faciliter la recherche, un peu longue mais méthodique.
Merci à l’équipe jeedom pour le taf









