将数组作为参数传递给php脚本

时间:2015-04-20 12:58:19

标签: php

我想运行php脚本并将参数传递给它。参数在数组中。

我是json_encode数组:

$bot = array(
   'timing' => '* * * * *',
   'path' => '/sompath/'
);

$bot = json_encode($bot);

并将其发送到脚本:

exec('nohup php script.php "' . $bot . '" > /bot.log 2>&1 &');

然而,在剧本中,我不会'接收参数:

print_r($argv[1]); // {path:/sompath/,frequency:*

看起来像星号这样的特殊符号没有被解析并且破坏了json。

如何将数组传递给另一个脚本并确保保留所有参数?

3 个答案:

答案 0 :(得分:2)

如果要将json数据作为字符串传递,则应首先将其转义:

$bot = array(
   'timing' => '* * * * *',
   'path' => '/sompath/'
);

$bot = json_encode($bot);
$bot=escapeshellarg($bot);

然后在接收脚本上:

print_r(json_decode($argv[1]));

答案 1 :(得分:0)

很简单。应该使用urlencode正确传递json。

exec('nohup php script.php "' . urlencode($bot) . '" > /bot.log 2>&1 &');

然后,在script.php中:

$params = urldecode($argv[1]);
$params = json_decode($params, true);

答案 2 :(得分:0)

我无法使用nohup发送参数。顺便说一下,这段代码对我有用!

$arg1 = escapeshellarg("Hello World");
$ouput = shell_exec("php file.php {$arg1} >/dev/null 2>&1 &");

file.php

$argument = $argv[1];