在PHP中执行perl
可能重复:在PHP中执行perl,php,perl,shell,exec,Php,Perl,Shell,Exec,可能重复: 我想通过PHP执行一个perl脚本。我使用exec()执行perl脚本。它在我的机器上工作,但在服务器上不工作。该服务器基于CentOS Linux 我对PHP和perl脚本文件都授予了完全权限(777)。当我尝试执行时,我在错误日志中得到以下错误 sh: /perl: No such file or directory 我尝试使用以下方法执行 exec("perl -w Script.pl $username $password",$output); exec("/usr/bi
我想通过PHP执行一个perl脚本。我使用
exec()
执行perl脚本。它在我的机器上工作,但在服务器上不工作。该服务器基于CentOS Linux
我对PHP和perl脚本文件都授予了完全权限(777)。当我尝试执行时,我在错误日志中得到以下错误
sh: /perl: No such file or directory
我尝试使用以下方法执行
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);
我还尝试使用系统
功能
$output = system("perl Script.pl $username $password");
passthru("/usr/bin/perl -w Script.pl $username $password",$output);
当我尝试这个时,什么也没发生
我还尝试使用passthru()
函数执行perl
$output = system("perl Script.pl $username $password");
passthru("/usr/bin/perl -w Script.pl $username $password",$output);
当我执行这一行时,$output
打印127,脚本中什么也没有发生
exec("/usr/bin/perl /full/path/to/Script.pl $username $password",$output);
我使用is\u executable()
函数检查了文件是否可执行。它表明该文件不可执行
代码如下
$file = 'Script.pl';
if (is_executable($file))
{
echo $file.' is executable';
}
else
{
echo $file.' is not executable';
}
如果我通过终端执行perl,它工作得很好,但是当我尝试通过PHP执行时,它不工作 使用完整路径执行脚本
exec("/usr/bin/perl /full/path/to/Script.pl $username $password",$output);
问候,@K102对不起你。。。我打错了这篇文章..@Gordon谢谢你的链接。。我仍然有同样的问题。也许因为一些严格的安全设置,你不允许从php进行任何系统调用?使用类似于
ls
或cwd
的简单命令进行检查。如果只在命令行中使用perl解释器预先执行perl脚本,则不必设置execute权限<代码>664应该可以。否则,如果服务器是以这种方式设置的,那么它可能可以从浏览器执行。exec的输出是什么('which perl',$output)代码>给你?我通过在php.ini中禁用安全模式解决了这个问题。我已经尝试过了。。PHP以apache用户www-data
的身份执行。您的脚本可能需要作为sudo运行,但PHP不允许这样做。至少对于debiab
,运行visudo
,然后添加www-data-ALL=(ALL:ALL)NOPASSWD:/pat/to/your/script.pl
,然后更改权限以便只有root用户可以编辑文件(安全):sudo-chown-root:someuser/path/to/your/script.pl
,最后,使其可执行sudochmodu+rwx/path/to/your/script.pl