通过PHP执行Perl会返回Exit Status 2

时间:2014-02-17 16:34:25

标签: php perl bash

我试图通过PHP通过以下命令执行Perl脚本:

$last_line = exec('/usr/bin/perl /path/to/perl/script.pl ' . escapeshellarg($argument),$output,$status);

脚本不执行其功能,退出状态始终为2(shell内置不正确使用)。 Perl和脚本都可以被任何用户读取和执行。在命令行上运行脚本可以正常工作。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我使用此代码运行位于与php文件相同的文件夹中的file.pl

$output = passthru("perl relative_path/file.pl ".$_POST["var1"]." ".$_POST["var2"]);

答案 1 :(得分:0)

我使用perl脚本作为PHP的数据库接口,代码如下:

exec ( $cmdToPass . " 2>&1" , $output , $returnVar);

其中:

  • $cmdToPass是我正在执行的命令(perl脚本),stderr被重定向到stdout。
  • $output保存命令的输出
  • $returnVar包含退出代码

然后,您应该能够打印$output以确定脚本的原因。您可能还希望检查PHP错误日志(通常与Web服务器的错误日志相同)以查看是否在那里捕获了任何内容。

如果您需要有关exec功能的更多信息,请参阅PHP manual on exec