Problème avec yaml_parse_file()

Bonjour à tous, je suis en train de développer un plugin qui s’appelle solarman et pour alimenter les équipements je me sers de fichiers créés pour home assistant au format yaml. Chez moi tout va bien mais pour certains utilisateur il apparait une erreur 500 lorsque le plugin tente de parser le fichier yaml, dans le log http_error il y a cette ligne:

Uncaught Error: Call to undefined function yaml_parse_file()

Une recherche sur google me dit qu’il faut installer yaml avec pecl:

$ sudo apt-get install libyaml-dev
$ sudo pecl install yaml

pour ces 2 commandes il est répondu que c’est déjà installé…

En continuant à chercher il y a des sites qui préconisent de remplacer dans le fichier php.ini:

extension=”yaml.so”

par

extension=yaml.so

Mais dans mon fichier ini où cela fonctionne il n’y a même pas cette ligne…

Quelqu’un aurait une idée?

Merci d’avance.

Salut,

Moi je n’utilise pas ca, je charge une autre lib symfony/yaml (include gérée via composer)

Ok, merci. C’est possible que tu m’expliques comment tu fais?

Bien sur, tu connais déjà composer?

Non pas du tout

ok, un peu de lecture pour commencer alors: Introduction - Composer

une fois installé, tu te met dans le dossier racine de ton projet dans un terminal et généralement tu tapes

composer require [package_name]

lorsque les libs supportent une installation via composer, tu le verras assez vite sur leur page de doc, exemple pour celle-ci: The Yaml Component (Symfony Docs)

composer require symfony/yaml

il va travailler et ca va te créer un dossier vendor et les fichiers composer.json et composer.lock
image

il suffit ensuite d’inclure le fichier « autoload.php » qui a été généré qui se charge d’inclure toutes les libs demandées et bien sur de faire le use des class voulues:

require_once __DIR__ . '/../../vendor/autoload.php';

use Symfony\Component\Yaml\Yaml;

class maClass extends eqLogic {}

moi je livre le dossier vendor avec le plugin donc il n’y a rien de plus à faire
on peut aussi ne pas le faire et installer composer sur le jeedom de l’utilisateur + installer ces libs lors de l’installation des dépendances du plugin;
je n’en vois pas l’avantage perso: ca ne prend pas énormément de place (juste des fichiers php), ce sont de toutes façons des fichiers du plugins et pas système et il n’y a jamais rien à « compiler » ou autre en fonction de la machine et au moins je suis certain de ce que je livre, pas de plantage d’installation possible dû au contexte de la box jeedom de l’utilisateur.

mais ca serait différent si/quand le core pourra gérer les dépendances composer, ca sera pour le futur.

penses aussi à mettre en place ceci pour être notifié des mises à jour de dépendances à faire (voir le plugin-template avec la config dependabot pour composer)

pour mettre à jour les dépendances manuellement, de nouveau dans un terminal: composer u


pour utiliser la lib yaml en question, le mieux est que tu lises leur doc, c’est complet :wink:

1 « J'aime »

Super. Merci, je vais étudier tout ça :+1:

Bonjour,
Regarde si en redemarrant jeedom (en vrai apache) ca ne suffit. Perso le yaml je m’en sers sur z2m (jeezigbee) et aucun soucis j’installe php-yaml et redemarrage d’apache).

À part les indiens que veux tu dire en « vrai apache »?

Apache = le nom du serveur web qu’utilise jeedom

Oui ça je sais quand même mais qu’entends tu par redémarrer en vrai apache? Un reboot de jeedom suffit?

regarde le plugin z2m le fichier de packages du plugin tu as tout dedans et quasiment juste a recopier pour ton plugin. Jeedom s’occupera de l’installation et du redemarrage.

Ok je teste ça aussitôt que possible

Loic voulait dire: « en vrai, en réalité, redémarrer seulement apache suffit, pas besoin de redémarrer la machine au complet »

2 « J'aime »

Merci @Loic , ça marche enfin… Super simple en plus :wink:

++

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.