Alerte dans le log http.error

Bonjour,

en réalisant une sauvegarde manuelle sur une version 4.3.15, je me suis aperçu d’une ligne PHP Warning :

[31-Jan-2023 07:39:50 Europe/Brussels] PHP Warning: substr() expects parameter 3 to be int, string given in /var/www/html/desktop/php/backup.php on line 66

rien de dramatique dans un quotidien mais en effet la fonction sbstr() ne semble pas être utilisée correctement sur la ligne indiquée.
Je laisse les développeurs du Core regarder ce point à l’occasion.

Bonjour,

Il faut systématiquement fournir une capture d’écran de la page santé jeedom
Cela permettra d’avoir les infos utiles comme version du core, de php, de debian…

voici la page de santé, même si à la lecture de la ligne de code cela ne me paraissait pas nécessaire du fait, à mon sens, d’une inversion de l’ordre des paramètres dans la fonction PHP.

Hello,

J’ai la même chose lors du déclanchement d’un backup manuellement, je viens de test à l’instant :

image

[31-Jan-2023 14:11:32] PHP Warning:  substr() expects parameter 3 to be int, string given in /var/www/html/desktop/php/backup.php on line 66
[31-Jan-2023 14:11:32] PHP Stack trace:
[31-Jan-2023 14:11:32] PHP   1. {main}() /var/www/html/index.php:0
[31-Jan-2023 14:11:32] PHP   2. include_file() /var/www/html/index.php:85
[31-Jan-2023 14:11:32] PHP   3. require_once() /var/www/html/core/php/utils.inc.php:79
[31-Jan-2023 14:11:32] PHP   4. substr() /var/www/html/desktop/php/backup.php:66

Version OS : debian 10.13
Version PHP : 7.3.31-1~deb10u1
Version Jeedom : 4.3.12

Ca vient clairement d’un mauvais placement du 3eme paramètre ici desktop/php/backup.php:66 :

<?php if (   substr(0, 1, config::byKey('backup::path'))    != '/') { ?>

La correction a été faite en Alpha depuis début novembre, mais pas en beta, ni stable.

Et le changement (problématique) a été introduit par ce commit.

Tant qu’on y est, j’ai aussi ça :

PHP Warning:  Invalid argument supplied for foreach() in /var/www/html/core/class/scenario.class.php on line 1590

Donc le code foreach ($usedBy['plugin'] as $key => $value) {
De ce commit
Le champ plugin de l’array $usedBy peut ne pas exister.

Pas de fix en alpha, beta ou stable.
Il faudrait probablement rajouter le champ plugin à l’array de retour ici :
https://github.com/jeedom/core/blob/e3a00e0549903cb6492f37ebb31ee9aee022c0e8/core/class/scenario.class.php#L1623


Et aussi :

PHP Warning:  Invalid argument supplied for foreach() in /var/www/html/core/class/system.class.php on line 356

Donc le code foreach ($datas['dependencies'] as $key => $value) {
De ce commit
Idem, le champ dependencies de l’array $datas peut ne pas exister.

Pas de fix en alpha, beta ou stable.
Il faudrait probablement rajouter un test sur l’existance du champ dependencies avant le foreach.

Bonjour,
Rien de grave vu qu’on ne coupe pas les warning php par simplicité lors du debug sur vos jeedoms vous avez ca mais vous pouvez completement l’ignorer.

Oui tout à fait, on est en phase sur l’impact :+1:

Par contre je vais quand même faire une issue sur Github pour que ce soit tracé, sauf si toi ou quelqu’un d’autre s’en occupe déjà :wink:

Tu peux oui mais c’est déjà corrigé en 4.4 donc je sais pas trop a quoi ça va servir.

Après je pense je vais désactiver les warning car si vous me remonter tous les trucs du genre je vais plus rien faire d’autre que de corriger ce qui ça alourdir le code et le ralentir

de mon point de vue un PHP Notice ou Warning doit être considéré mais à un niveau et une priorité moindre que les erreurs ou même peut être les évolutions.
Par contre dans un objectif d’amélioration continue du produit et pour éviter toutes déconvenues futures, il me parait intéressant de les prendre en compte. Ce n’est que mon point de vue :wink:

Oui dans l’absolu mais en pratique c’est compliqué ça peut être un plugin qui ne remplis pas un champs correctement donc je suis obligé de mettre un test et ça va ralentir l’exécution chez tout le monde pour un problème qui devrait être corrigé a la source

Ah non je parlai seulement de ceux du Core. pour moi ceux incombant des plugins doivent être corrigés par les dev des plugins en eux mm