2010-06-15 9 views
0

J'ai un script PHP qui appelle un autre script afin d'ajouter des adresses IP à une liste blanche. Je veux parfois à la liste blanche toutes les adresses, dans ce cas, je l'ai appeléDésactiver globbing dans PHP exec()

exec("otherscript *.*.*.*", output, retval); 

Cela a bien fonctionné, en ajoutant la chaîne « *. *. *. * » À la liste blanche jusqu'à ce que je est arrivé d'avoir un autre fichier dans le répertoire du script php qui correspond à ce modèle ("foo.1.tar.gz"), à quel point les caractères génériques ont été développés, et je me suis retrouvé avec le nom de fichier dans ma liste blanche. Y at-il un moyen de désactiver globbing dans l'exec de PHP? Il n'est pas mentionné dans les docs PHP autant que je peux dire.

Répondre

3

escapeshellarg assurerons que votre chaîne est sûr pour l'utilisation comme argument shell. Globbing n'est probablement pas mentionné dans le manuel parce que c'est à la coquille, et diffère également entre les différentes coquilles.

$address = escapeshellarg('*.*.*.*'); 
exec("otherscript $address", $output, $retval); 
+0

Bien sûr, mais le manuel ne fait aucune mention de * toute * sorte de coquille. –

+0

Ignacio, je suis corrigé! :-) Cependant, le manuel a un grand message d'avertissement rouge sur l'utilisation d'escapeshellarg. –

1

le paramètre Citant devrait aider:

exec("otherscript '*.*.*.*'", output, retval); 
+1

Assurez-vous également que votre chaîne d'entrée à elseScript est nettoyée. Cela peut conduire à toutes sortes de problèmes de sécurité. –

+0

On dirait qu'à la fin, c'est ce que fait aussi escapeshellarg – wxs