我有一个PHP脚本调用另一个脚本,以便将IP地址添加到白名单。我有时想将所有地址列入白名单,在这种情况下,我打电话给
exec("otherscript *.*.*.*", output, retval);
这很好用,将字符串“*。*。*。*”添加到白名单,直到我碰巧在php脚本的目录中有另一个匹配该模式的文件(“foo.1.tar.gz” ),此时通配符被扩展,我最终在白名单中输入了文件名。有没有办法在php的exec中禁用globbing?据我所知,在PHP文档中没有提到它。
答案 0 :(得分:3)
escapeshellarg将确保您的字符串可以安全地用作shell参数。手册中可能没有提到Globbing,因为它取决于shell,并且在不同的shell之间也有所不同。
$address = escapeshellarg('*.*.*.*');
exec("otherscript $address", $output, $retval);
答案 1 :(得分:1)
引用参数应该有帮助:
exec("otherscript '*.*.*.*'", output, retval);