带有/ arguments的PHP EXECUTE PERL

时间:2014-11-23 17:08:46

标签: php syntax exec

我有以下php脚本需要调用perl脚本和参数。如果我的路径正确,那么语法有什么问题吗? php和服务器端的perl。 php接收信息($ GET [' zipc']通过url.perl脚本将在服务器上生成一个xml文件。我不断出现意外' exec'(T_STRING)在第8行。感谢任何建议。

<?php
$zipc="-Z";
$lineup="-Y USA";
$fformat="-U";
$duration="-d 2";
$outfile="-o";
$ofile="guide.xml"
exec("perl http://www.myserver.com/myperl.pl" $zipc $_GET['zipc'] $lineup $fformat $duration           $outfile "http://www.myserver.com/myfile.xml");
print"FINALLY GOT TO END";
?>

编辑: 好吧,我觉得这一切都解决了。现在我收到以下错误: 致命错误:只能传递变量

根据我拥有脚本托管的技术支持人员,我必须重写包含exec的代码行,以便不打开连接。有点不知所措。有什么建议吗?

编辑2: 问题在于数组。根据我的理解,如果没有生成错误,数组不能像答案中所示那样传递。为了解决这个问题,我将变量和$ _GET连接成一个变量。似乎解决了这个问题。

1 个答案:

答案 0 :(得分:1)

the exec() function的第二个参数是 array 。您的代码中有多个语法错误,因为您只是列出了一堆变量而没有将它们放在数组中。

即使exec()确实列出了很长的参数列表它没有,但您的代码仍然无效,因为您没有用逗号分隔它们

这应该有效(注意第7行和第8行的变化):

<?php
$zipc="-Z";
$lineup="-Y USA";
$fformat="-U";
$duration="-d 2";
$outfile="-o";
$ofile="guide.xml";
exec("perl http://www.myserver.com/myperl.pl", array($zipc, $_GET['zipc'], $lineup, $fformat, $duration, $outfile, "http://www.myserver.com/myfile.xml"));
print"FINALLY GOT TO END";