Bonjour, depuis ce matin et la dernière mise à jour :
Freebox_OS Erreur sur la fonction cron du plugin : Call to undefined function str_contains()
Une idée ?
Merci
Bonjour, depuis ce matin et la dernière mise à jour :
Freebox_OS Erreur sur la fonction cron du plugin : Call to undefined function str_contains()
Une idée ?
Merci
Bonjour,
J’ai aussi le même problème dans les loges suite à la dernière mise à jour et erreur de recherche équipements standards. Cette fonction existe mais pour PHP8 je pense pas pour le 7
Informations Jeedom Delta
Core : 4.4.19 (master)
DNS Jeedom Delta : oui
Plugin : Freebox
Version : 2025-05-04 21:03:35 (stable)
Statut Démon : Démarré - (2025-05-05 09:27:20)
Informations complémentaires
Box [fbxgw7r] ; Box_name [Freebox v7 (r1)] ; Firmware [4.9.2] ; Mode [router] ; IP Box [mafreebox.freebox.fr]
Nom [Jeedom Delta] ; API [v14] ; Box compatible avec la domotique [OK] ; Cron pour la domotique [1] ; Box compatible avec les VM [1]
Scans : EQ [29/01/2025 13:59:26] ; Tiles [05/05/2025 09:31:35] ; Parental [05/05/2025 09:31:31]
Box compatible avec le mode Eco Wifi [1] ; Box compatible avec les LED rouges [0] ; Box compatible avec l'orientation du texte sur l'afficheur []
Cordialement.
meme erreur. le probleme vient du fait que cette fonction n’est supportée qu’a partir de PHP8.
Or je (et surement toi) sommes en version 7.
Merci de corriger pour que ca remarche en PHP7.
Bonjour,
Il faudrait les logs pour que je puisse trouver ou cela bloque pour que je puisse faire la modificaition
Après si cela vient que vous etes encore sur debian 10 avec Php 7. Cela va être compliqué pour moi de maintenir le code pour cette version.
je suis sous debian 11 mais PHP 7
Ok il faudrait alors les deux logs que j’ai demandé pour que je vois comment faire qq chose pour php 7
Je me sers de cette fonction pour la nouvelle API des players, je vais essayer de voir pour faire un autre moyen pour éviter cette erreur sur PHP 7
Log du plugin :
[2025-05-05 10:00:08][ERROR] : Erreur sur la fonction cron du plugin : Call to undefined function str_contains()
Pas d’erreur dans http.error
Bonjour,
Idem je suis sur Debian 11 mais php7 si on doit passer en 8 je pourrais le faire ??
http.error.txt (29,7 Ko) Je vois rien dedans.
Freebox_OS.txt (745,5 Ko)
Cordialement.
Bonjour il manque des lignes mais avec le message suivant je peux trouver
je ne suis pas un expert de mise à jour de Debian, je suis passé sur mes instal en débian 12 donc je ne peux te dire mais je pense que si je cherche sur communauty
Mais merci avec les logs
avec cela j’ai bien vu l’erreur
0981|[Mon May 05 09:14:46.797644 2025] [php7:error] [pid 3024049:tid 3024049] [client 192.168.1.31:55356] PHP Fatal error: Uncaught Error: Call to undefined function str_contains() in /var/www/html/plugins/Freebox_OS/core/class/Free_API.class.php:286\nStack trace:\n#0 /var/www/html/plugins/Freebox_OS/core/class/Free_API.class.php(262): Free_API::msg_box()\n#1 /var/www/html/plugins/Freebox_OS/core/class/Free_API.class.php(527): Free_API->fetch()\n#2 /var/www/html/plugins/Freebox_OS/core/class/Free_Refresh.class.php(280): Free_API->universal_get()\n#3 /var/www/html/plugins/Freebox_OS/core/class/Free_Refresh.class.php(262): Free_Refresh::refresh_connexion_4G()\n#4 /var/www/html/plugins/Freebox_OS/core/class/Free_Refresh.class.php(54): Free_Refresh::refresh_connexion()\n#5 /var/www/html/plugins/Freebox_OS/core/class/Freebox_OS.class.php(850): Free_Refresh::RefreshInformation()\n#6 /var/www/html/core/class/DB.class.php(250): Freebox_OS->postSave()\n#7 /var/www/html/core/class/eqLogic.class.php(1053): DB::save()\n#8 /var/www/html/plugins/Freebox_OS/core/class/Freebox_OS.class.php(477): eqLogic->save()\n#9 /var/www/html/plugins/Freebox_OS/core/cla in /var/www/html/plugins/Freebox_OS/core/class/Free_API.class.php on line 286, referer: http://192.168.1.32/index.php?v=d&m=Freebox_OS&p=Freebox_OS
Je vais essayer de faire quelques choses pour résoudre ce problème
if (!function_exists('str_contains')) { // à partir de php 8
function str_contains($haystack, $needle) {
return $needle !== '' && mb_strpos($haystack, $needle) !== false;
}
}
Merci de ton aide.
Il faut que je regarde pour l’inégrer GITHUB freebox
if (str_contains($api_url, '/player/') && $error_code == 'invalid_api_version') {
$type_log = 'Debug';
log::add('Freebox_OS', 'debug', ':fg-warning: ───▶︎ ' . (__('Annulation du message d\'erreur pour le Player avec la version de l\'API', __FILE__)) . ':/fg:' . ' : ' . $api_url);
} else {
$type_log = 'Error';
}
Tu le mets en tête de ton code et ainsi la fonction non disponible en PHP < 8 devient disponible.
EDIT : Code fonctionnel que je mets dans des blocs code, certainement à adapter pour un plugin.
Il faut le mettre dans quel fichier stp ?
Il vaut mieux attendre la correction de JAG.
Je ne maîtrise pas ce code dans le cadre d’un plugin.
str_contains
c’est une fonction « raccourci » mais qui n’existe que sur php>8; hors jeedom tourne sous deb11 donc php7.4
alors oui tu peux faire un truc avec un !function_exists...
mais pourquoi tu n’utilise pas s’implement strpos
(ou mb_strpos
si tu veux, ca change pas grand chose) dans tous les cas? ca résoudra ton problème et évitera la complexité
sinon c’est typiquement le bout de code qui irait dans core\php\template.inc.php
(« template » à remplacer par le plugin évidement)
Je pousserai surement ce soir la mise à jour.
Car je n’y ai pas pensé quand j’ai fait le code. Je ferais la modif ce soir
Merci de ton retour
Bonsoir,
je viens de pousser la mise a jour sur le market
Oui il faudrait les logs car ce n’est pas un message que je masque
On est d accord tu as fait une recherche des équipements standards.
A priori tu as équipement inconnu quand je regarde les messages d’erreur sur la Freebox. J’ai ajouté a l’instant un texte supplémentaire dans les logs et le centre de message.
c’est disponible en beta et stable