我正在尝试通过以下命令通过PHP执行Perl脚本:
$last_line = exec('/usr/bin/perl /path/to/perl/script.pl ' . escapeshellarg($argument),$output,$status);
脚本不执行其功能,退出状态始终为 2(外壳内置使用不当)。Perl 和脚本都可以由任何用户读取和执行。在命令行上运行脚本就可以了。有什么想法吗?
我使用此代码运行与php文件位于同一文件夹中的 file.pl
$output = passthru("perl relative_path/file.pl ".$_POST["var1"]." ".$_POST["var2"]);
我使用 perl 脚本作为 PHP 的数据库接口,代码如下:
exec ( $cmdToPass . " 2>&1" , $output , $returnVar);
哪里:
-
$cmdToPass
是我正在执行的命令(perl脚本),stderr重定向到stdout。 -
$output
保存命令的输出 -
$returnVar
保存退出代码
然后,您应该能够打印$output
以确定脚本的原因。您可能还希望检查PHP错误日志(通常与Web服务器的错误日志相同),以查看其中是否捕获了任何内容。
如果您需要有关 exec 函数的更多信息,请参阅 PHP 手册。