2014-10-19 118 views
0

我想从另一个php脚本中执行一个php脚本。我似乎无法让它正确传递参数。我究竟做错了什么?exec PHP不传递参数

第一个剧本叫

<?php 

$item = "hello"; 
$item2 = "world"; 
exec("php scriptToBeExecuted.php arg1=".$item." arg2=".$item2." &"); 
?> 

脚本执行

<?php 
var_dump($argc); 
if (isset($argv)) 
{ 
    parse_str(implode('&', array_slice($argv, 1)), $_GET); 

    $item= $_GET['arg1']; 
    $item2= $_GET['arg2'];; 
} 
else 
{ 
    echo "not set"; 
} 
?> 

我没有收到在浏览器中的任何输出,当我尝试执行此操作。这不是主要问题,因为我正在使用它来进行数据库调用,但正如我所说的,经过几个小时的忙碌之后,它将无法正常执行或根本无法执行

+0

尝试PHP的许多exec'ers的另一个:http://nl3.php.net/exec – Rudie 2014-10-19 01:35:18

回答

0

您必须将此脚本作为命令运行或者作为网页。如果前者没有$_GET这样的东西。如果是后者,则不存在$argv。尝试这个。

第一个剧本叫

<?php  
$item = "hello"; 
$item2 = "world"; 
exec("php scriptToBeExecuted.php $item $item2"); 
?> 

脚本执行

<?php 
var_dump($argc); 
if (count($argv) === 3) { 
    $item= $argv[1]; 
    $item2= $argv[2]; 
} else { 
    echo "not set"; 
} 
?> 

参见:

PHP passing $_GET in linux command prompt

$_SERVER['argv'] with HTTP GET and CLI issue