在PHP中将arg从函数传递给bash脚本

时间:2014-09-19 00:15:24

标签: php bash exec args

我在网页上有一个菜单系统,允许用户从多个选项中进行选择。选择一个选项后,我想通过函数将其作为arg传递。我想评估以查看所选内容,然后执行提供arg的脚本。我是PHP的新手,但很高兴学习。以下是我尝试消化相关解释后的最佳尝试。

public function getData($args=array()) {

        if(isset($args["what"])){
            exec(
                '/home/foo/myscript.((string)$args["what"]');
        }
        else{
            exec(
                '/home/foo/myscript()');
        }
    }

我怀疑我没有在shell脚本和参数之间正确占用空间,但我尝试的看似合理的变化都失败了。我是在正确的轨道还是我应该以另一种方式一起尝试?

1 个答案:

答案 0 :(得分:0)

exec('/home/foo/myscript.((string)$args["what"]');

这个问题是当你开始尝试连接PHP时,你仍然在你的字符串中。首先关闭字符串。

exec('/home/foo/myscript ' . (string)$args["what"] );

接下来,您希望在将参数传递给脚本时更加安全,这样他们就不会被误解。查看escapeshellarg()http://php.net/manual/en/function.escapeshellarg.php

exec('/home/foo/myscript ' . escapeshellarg((string)$args["what"]) );

此外,您可能不需要(string),因为escapeshellarg()无论如何都只使用字符串。该参数中的任何内容都将被转换为字符串。

exec('/home/foo/myscript ' . escapeshellarg($args['what']) );