Dysfonctionnement du plugin Script en Debian 12

Bonjour à tous,

J’ai restauré ma sauvegarde courante sur un Pi avec Raspberry Pi OS 64 bits Bullseye, le même Jeedom est présent de chaque coté : Jeedom 4.4.17 (migré depuis en v4.4.18).
La seule différence que je crois avoir, est la version de Debian : 11 OK / 12 NOK

Je constate qu’un équipement réalisé avec le plugin Script ne fonctionne plus. Si je demande un rafraichissement, il ne se termine pas (il faut rafraichir la page ensuite).

Informations constatées :
Aucun log en erreur
Rafraichissement manuel ne se termine pas
Les informations restent (commande info) restent celle du jour de la sauvegarde
Si j’ouvre l’équipement et me contente de sauvegarder l’exitant, on voit qu’au moins 3 rafraichissements arrivent en même temps (pas de log, pas d’erreur)
Si je duplique le script, j’ai cet écran :
image
=> mais la copie est bien présente
Ce script contient 3 commandes, en les supprimant une à une, c’est pareil, j’ai le même résultat.

L’équipement en question fonctionne bien sur Debian 11 / Debian 10
Il ne fait que récupérer (voler…) des informations sur 2 sites différents, en ne laissant que l’une ou l’autre des commandes, le problème est le même (ne fonctionne pas et erreur à la copie).

Exemple :

Si vous avez une idée, merci.

Salut

As-tu aussi regardé le log http.error?
Je n’ai pas ce type de script mais chez moi le plugin tourne correctement sur une vm debian 12 à jour.

Antoine

Bonjour,

Pas de log (tu penses bien que j’aurais tout signalé sinon…)

J’ai d’autres scripts qui fonctionnent bien. C’est juste les 3 qui récupère des données d’autres sites (web scraping) qui ne fonctionnent pas.

Bonjour,
Il faudrait supprimer l’équipement avec l’id 26 et le refaire.

Bonjour Loic,

ID26 n’existe pas sur cet équipement.

J’ai créé un nouveau équipement Script depuis 0 et j’ajoute juste une commande. Et au moment de sauvegarder j’ai cela :

Merci pour ton assistance

salut,

peux-tu ouvrir la console dev au moment du save?

je suspecte que l’on verra une erreur 500 et de multiple appel ajax et le problème (depuis vanillajs? pas l’impression que ca faisait ca avant), en cas d’erreur 500 le javascript réessaye et donc il post 2 fois le save et donc duplicate; j’ai déjà eu ce problème pendant le dev d’un plugin qui provoque une erreur 500 sur mon jeedom avec des commandes et des eqLogic aussi (avec les eqlogic du coup tu te retrouves avec 5 doublons car il y a 5 essais)

Salut,

J’ai bien cette erreur 500 :
Failed to load resource: the server responded with a status of 500 (Internal Server Error)

image

En dehors de cela, j’ai surtout que cela ne fonctionne pas, ce même équipement / commande, sur Debian 11 est 100% OK

tu sais donner dans un Texte préformaté les différentes valeurs à configurer pour pouvoir reproduire stp?
en gros, l’url et la « requête » devrait suffire je pense

Oui je sais faire :wink:

Script de type HTML

Paramètres

https://www.dico-dictons.com/dicton-jour.php

Type : Info/Autre

Requête :

#content > h5:nth-child(6) > blockquote

Afficher
Historiser

merci dis :wink:

je reproduis.

et ton équipement est bien actif? car si inactif pas de problème car il n’essaie pas de rafraichir la commande

et si tu refresh la page et que tu refais le save, là plus d’erreur affiché mais en fait il fait les 4 essais qui ont tous une erreur 500

donc l’erreur sur le insert c’est juste du à ca:

  • le refresh de la commande crash donc erreur 500;
  • le js fait des retry sauf que sur nouvelle commande il n’a (toujours) pas l’id
  • donc le backend (php) considère que c’est une nouvelle commande à insert et donc duplicate sur le nom
  • erreur 500 affichée sur duplicate du nom et pas d’autre essai

alors que si on fait un f5, là

  • on a bien la commande affiché car elle a bien été sauvée la première fois;
  • un save va alors provoquer 4 erreurs 500 invisible à l’écran (mais visible dans la console dev) car le refresh de la commande crash toujours

et bien sur la commande n’est jamais mise à jour.

ici la question est pas de savoir si ta syntaxe est bonne ou pas mais en cas de crash lors du refresh, l’exception ne devrait pas avoir d’impact sur le save de la commande => premier bug

possible deuxième bug: si la syntaxe de la commande est correcte (et fonctionne sur une version précédente) alors ca ne devrait pas crash au refresh.

mais donc il y a 2 problèmes distinct à adresser selon moi.

2 « J'aime »

Bonjour
Merci pour l’analyse je regarde semaine prochaine

1 « J'aime »

j’ai regardé rapidement hier et mauvaise nouvelle je pense:
D’après moi c’est la lib qui sert au parsing html (phpquery) qui n’est pas compatible php8 et qui crash complétement, même pas moyen d’intercepter une exception.
elle n’est plus maintenue depuis une dizaine d’année donc c’est mort de ce coté

Il semblerait que plusieurs fork existent pour la compatibilité avec php8.

Salut,

Pour moi elle a été mise a jour ya un an electrolinux/phpquery: A packagist-friendly fork of phpquery WARNING: abandonware and buggy: use at your own risk (github.com) après il dit pas si c’est compatible php8. Je vais deja passer le plugin en mode composer maintenu par le core ca serait plus simple

Bonjour,

Vu qu’il y a un PR non validé pour la compatibilité avec PHP8.1 ça sent mauvais non ?

Oui mais on va esperéer que ca soit pas un bug bloquant sinon je serais obligé de retirer cette partie du plugin

1 « J'aime »

ce fork oui
j’avais l’impression que le plugin était encore sur l’original: GitHub - TobiaszCudnik/phpquery: Server-side implementation of jQuery in PHP5 (2009) mais j’ai pu me tromper, je n’ai pas vérifier en détail

effectivement, tant mieux s’il y a des forks qui fonctionnent plus ou moins

Voila en beta j’ai pousser une correction pour eviter de planter en cas de soucis de refresh (et donc doubler la commande) et une mise a jour de la lib. Il faut mettre a jour la beta et bien relancer les dépendances

Bonjour.

Sauf erreur de ma part (a distance, sur smartphone), j’ai mis à jour le plugin dans sa version bêta et j’ai réinstallé les dépendances.

Les commandes ne fonctionnent toujours pas, mais j’ai un indice ce coup ci.

2024-10-07 15:29:05	script	Class "phpQuery" not found

Merci pour vos démarches.

0000|+ echo '*******************Begin of package installation******************'
0001|*******************Begin of package installation******************
0002|+ touch /tmp/jeedom_install_in_progress_script
0003|+ echo 1
0004|+ echo 2
0005|+ sudo chmod +x /var/www/html/core/class/../../resources/install_composer.sh
0006|+ sudo /var/www/html/core/class/../../resources/install_composer.sh
0007|Begin installation of composer
0008|--2024-10-07 15:26:28--  https://getcomposer.org/installer
0009|Resolving getcomposer.org (getcomposer.org)... 54.36.53.46, 2001:41d0:302:1100::8:104f
0010|Connecting to getcomposer.org (getcomposer.org)|54.36.53.46|:443... connected.
0011|HTTP request sent, awaiting response... 200 OK
0012|Length: 58444 (57K) [application/octet-stream]
0013|Saving to: 'composer-setup.php'
0014|0K .......... .......... .......... .......... .......... 87% 6.15M 0s
0015|50K .......                                               100% 50.6M=0.008s
0016|2024-10-07 15:26:28 (6.91 MB/s) - 'composer-setup.php' saved [58444/58444]
0017|All settings correct for using Composer
0018|Downloading...
0019|Composer (version 2.8.1) successfully installed to: /var/www/html/core/ajax/composer.phar
0020|Use it: php composer.phar
0021|End installation of composer
0022|+ echo 3
0023|+ cd /var/www/html/core/class/../../plugins/script
0024|+ rm -rf vendor
0025|+ sudo composer install --no-ansi --no-dev --no-interaction --no-plugins --no-progress --no-scripts --optimize-autoloader
0026|Do not run Composer as root/super user! See https://getcomposer.org/root for details
0027|Installing dependencies from lock file
0028|Verifying lock file contents can be installed on current platform.
0029|Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. It is recommended that you run `composer update` or `composer update <package name>`.
0030|Package operations: 1 install, 0 updates, 0 removals
0031|- Downloading electrolinux/phpquery (0.9.6)
0032|- Installing electrolinux/phpquery (0.9.6): Extracting archive
0033|Generating optimized autoload files
0034|Plugins have been disabled automatically as you are running as root, this may be the cause of the following exception. See also https://getcomposer.org/root
0035|In AutoloadGenerator.php line 425:
0036|Undefined array key "content-hash"
0037|install [--prefer-source] [--prefer-dist] [--prefer-install PREFER-INSTALL] [--dry-run] [--download-only] [--dev] [--no-suggest] [--no-dev] [--no-autoloader] [--no-progress] [--no-install] [--audit] [--audit-format AUDIT-FORMAT] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--apcu-autoloader-prefix APCU-AUTOLOADER-PREFIX] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs] [--] [<packages>...]
0038|+ sudo chown -R www-data:www-data 3rdparty LICENSE composer.json composer.lock core data desktop docs plugin_info vendor
0039|+ echo 4
0040|+ php /var/www/html/core/class/../php/jeecli.php plugin dependancy_end script
0041|+ echo 5
0042|+ rm /tmp/jeedom_install_in_progress_script
0043|+ echo '*******************End of package installation******************'
0044|*******************End of package installation******************