Problème de shell_exec dans bloc code

Bonsoir à tous,
J’ai un problème avec un bloc code qui fonctionnait jusqu’à maintenant…
Le résultat de $json est vide.

$url = 'https://192.168.1.27/cgi-bin/api.cgi?cmd=Login';
$username = 'XXXXXXX';
$password ='MxA5-XXXXXXXXXXXXXXXX';
$payload = '
[
{ "cmd":"Login",
"param":{ "User":
{ "Version": "0",
"userName":"'.$username.'",
"password":"'.$password.'"
}
}
}
]
';

$json = shell_exec('curl -s -k -X POST -H "Content-Type: application/json" -d \'' . $payload . '\' ' . $url);


$scenario->setLog("Json : ".$json);
$data = json_decode($json, true);
$token = $data[0]['value']['Token']['name'];
$scenario->setLog("Token : ".$token);
$tags['#token#'] = $token;

Log :

[2024-02-07 21:58:12][SCENARIO] -- Start : Scenario execute automatiquement sur programmation.
[2024-02-07 21:58:13][SCENARIO] - Exécution du sous-élément de type [condition] : if (strtotime('+0 day') - variable(Date_Token_Reolink)) >= 33
[2024-02-07 21:58:13][SCENARIO] Evaluation de la condition : [(1707339493 - 1707339433) >= 33] = Vrai
[2024-02-07 21:58:13][SCENARIO] - Exécution du sous-élément de type [action] : then
[2024-02-07 21:58:13][SCENARIO] Exécution d'un bloc élément : 1597
[2024-02-07 21:58:13][SCENARIO] - Exécution du sous-élément de type [action] : code
[2024-02-07 21:58:13][SCENARIO] Exécution d'un bloc code
[2024-02-07 21:58:13][SCENARIO] Json :
[2024-02-07 21:58:13][SCENARIO] Token :

La même commande dans postman me donne bien un résultat.

On dirait que la commande shell_exec est cassée.

Pouvez vous m’aider ?

Merci

Bonjour,
J’ai pensé à un problème de droit, alors j’ai fait ça, mais sans succès

sudo su -
chmod -R 775 /var/www/html
chown -R www-data:www-data /var/www/html

J’ai trouvé cela dans les logs des scénarios :

0999|sh: 1: curl: not found
root@raspberrypi:~# apt install php-curl
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
php-curl est déjà la version la plus récente (2:7.3+69)

Bon, finalement j’ai trouvé, j’ai installé curl via apt-get install curl.
Ai-je bien fait ?

Merci
Mathieu

Bonjour,
Oui, c’est la commande UNIX curl qui manquait. 0999|sh: 1: curl: not found

La requête peut aussi se faire avec la commande PHP curl sans utiliser shell_exec.
https://www.php.net/manual/fr/book.curl.php

Hello,
Merci.
Je me demande si la suppression n’est pas liée à la mise à jour foireuse de Monitoring.

@jpty c’est la commande curl_exec ?
Du coup ça serait ça :

$json = curl_exec('-s -k -X POST -H "Content-Type: application/json" -d \'' . $payload . '\' ' . $url);

Mathieu

Un plugin ne doit pas désinstaller les paquets de l’OS qu’il aurait installés.
Les paquets sont partagés par tout le monde. Un plugin ne peut pas savoir s’il est le seul à l’utiliser.

Avec curl_exec, c’est un peu plus compliqué.
Voir les exemples d’utilisation là: PHP: curl_exec - Manual
Elle correspond à quoi l’url que vous interrogez ?

Un autre exemple ici : File_put_contents - #2 par jpty

C’est un script qui récupère des informations sur une caméra.