在PHP exec()中禁用通配符

时间:2010-06-15 05:33:52

标签: php

我有一个PHP脚本调用另一个脚本,以便将IP地址添加到白名单。我有时想将所有地址列入白名单,在这种情况下,我打电话给

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

这很好用,将字符串“*。*。*。*”添加到白名单,直到我碰巧在php脚本的目录中有另一个匹配该模式的文件(“foo.1.tar.gz” ),此时通配符被扩展,我最终在白名单中输入了文件名。有没有办法在php的exec中禁用globbing?据我所知,在PHP文档中没有提到它。

2 个答案:

答案 0 :(得分:3)

escapeshellarg将确保您的字符串可以安全地用作shell参数。手册中可能没有提到Globbing,因为它取决于shell,并且在不同的shell之间也有所不同。

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

答案 1 :(得分:1)

引用参数应该有帮助:

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