在PHP中执行perl

Sur*_*mar 9 php shell perl exec

可能重复:
从PHP调用Perl脚本并传入变量,同时还使用变量perl脚本名称

我想通过PHP执行perl脚本.我exec()用来执行perl脚本.它在我的机器上工作,但在服务器上不起作用.服务器基于CentOS Linux.

我给了PHP和perl脚本文件完全许可(777).当我尝试执行时,我在error_log中收到以下错误

sh: /perl: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下方式执行

exec("perl -w Script.pl $username $password",$output);
exec("/usr/bin/perl -w Script.pl $username $password",$output);
exec("/usr/bin/perl Script.pl $username $password",$output);
Run Code Online (Sandbox Code Playgroud)

我也试过使用这个system功能

$output = system("perl Script.pl $username $password");
Run Code Online (Sandbox Code Playgroud)

我尝试这个时什么也没发生.

我还尝试使用该passthru()函数执行perl

passthru("/usr/bin/perl -w Script.pl $username $password",$output);
Run Code Online (Sandbox Code Playgroud)

当我执行此行时,$output打印127并且脚本中没有任何操作.

我用该is_executable()函数检查了文件是否可执行.它显示该文件不可执行.

代码如下

$file = 'Script.pl';

if (is_executable($file))
{
    echo $file.' is executable';
}
else
{
    echo $file.' is not executable';
}
Run Code Online (Sandbox Code Playgroud)

如果我通过终端执行perl,它工作正常但是当我尝试通过PHP执行时,它不起作用.

小智 8

使用完整路径执行脚本.

exec("/usr/bin/perl /full/path/to/Script.pl $username $password",$output);
Run Code Online (Sandbox Code Playgroud)

问候,