Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Probleme au lancement d'un script c li avec shell_exec()

1 réponse
Avatar
Jean-Francois Ortolo
Bonsoir

J'ai un script tmp_cli.php , comportant la première ligne classique
pour un script Shell:

#!/usr/bin/php

Le script ne fait rien d'autre que de lire le contenu de l'array
$argv[][$i] de $i = 1 à ($arc - 1) , puis parser chaque paramètre de la
forme: "var=$var", puis affiche les lignes correspondantes: echo
"\t\$var = " . $var . "\t\n";

Le script tmp_cgi.php qui lance ce script cli, utilise la commande
shell_exec(), qui me semble poser problème, le problème étant de savoir
comment cette commande choisit le Shell qui prend en charge le script
déclenché.

Donc, ce script cgi contient les 3 instructions suivantes, avec les
paramètre qui vont bien, codés de la mêe manière, et reçus par le script
cgi de la manière classique, en get:

$output = shell_exec("./tmp_cli.php sql=" . $sql . " affic=" . $affic);

echo $output . "<br>\n";

exit;


...Ceci pour me limiter à deux paramètres.

Sur mon ordinateur chez moi ( php en mode cli ), ça marche très bien,
et les paramètre s'affichent correctement.

Or... Il se trouve que l'interpréteur php du serveur, était en mode
cgi. Je ne sais pas si cela a eu un effet, mais le fait est, que le
script cli déclenché, s'est autoreproduit de manière infinie, et a donné
lieu à de très nombreux processus de ce nom: "tmp_cli.php", ce qui a mis
le serveur à genoux. Il a du être rebooté.

Comment cela est-il possible, que le fait que l'interpréteur php soit
en mode cgi, ait eu cet effet-là ?

( C'est un serveur dédié ).

Et... Si le problème ne vient pas du fait que l'interpréteur était
compilé en mode cgi ( indiqué par 'php -v' ), d'où vient le problème ?

Merci beaucoup de vos réponses.

Bien à vous.

Amicalement.

Jean-François Ortolo

1 réponse

Avatar
Jean-Francois Ortolo
Aux dernières nouvelles...

Il semblerait qu'un nouvel essai avec un interpréteur php en mode
cli, fonctionne parfaitement.

Donc, le paramètre de la fonction shell_exec() devient:


$output = @shell_exec("/usr/bin/php -q -f ./tmp_script.php 2>/dev/null");

echo $output . "<br>n";

exit;

/usr/bin/php est un interpréteur php en mode cli, ça roule.

Problème résolu.

Bien à vous.

Amicalement.

Jean-François Ortolo