我想运行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。
如何将数组传递给另一个脚本并确保保留所有参数?
答案 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];