2015-04-20 205 views
-1

我想運行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。

如何將數組傳遞給另一個腳本並確保所有參數都保留?

+0

爲什麼您使用json_encode函數兩次? – KarthzDIGI

+0

對不起,例如錯誤 –

回答

2

如果你想通過JSON數據作爲一個字符串,你應該先逃跑吧:

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

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

,然後在接收腳本:

print_r(json_decode($argv[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);