2017-06-30 1 views
1

Pourquoi la fonction ssh2_exec ne transmet pas plus de trois paramètres?Im en utilisant ssh2_exec functionin php pourquoi il ne passe pas plus de 3 paramètres?

$stream_1 = ssh2_exec($ssh, "/root/Script/Auto_Traces/show_ng_trace.sh $a $b $c $d $e"); 

Dans ce cas, seul $a$b$c passent mais pas $d et $e, comment puis-je résoudre?

+1

Testez-le. print_r ("/ racine/Script/Auto_Traces/show_ng_trace.sh $ a $ b $ c $ d $ e"); Avez-vous ce que vous attendez? –

+0

Je ne comprends pas votre point mais je suis sûr que seulement $ a $ b $ c passent ... –

+0

Est-ce que $ d et $ e ont des valeurs? Sont-ils des piqûres? Ont-ils des espaces en eux? avez-vous activé le débogage pour savoir ce que vous envoyez? –

Répondre

1

Je suppose qu'il y a des espaces dans certaines des 3 premières variables, donc ils sont traités comme des arguments multiples. Ensuite, les 2 derniers arguments sont ignorés. Si l'une des variables contient des espaces (ou d'autres caractères spéciaux), vous devriez y échapper.

$ae = escapeshellarg($a); 
$be = escapeshellarg($b); 
// repeat for the rest of variables 
$stream_1 = ssh2_exec($ssh, "/root/Script/Auto_Traces/show_ng_trace.sh $ae $be $ce $de $ee"); 
+0

yessss !!! Escapeshellarg l'a résolu! Merci mec –