用PHP调用Perl脚本,传递变量并将结果放入文件

用PHP调用Perl脚本,传递变量并将结果放入文件,php,mysql,perl,Php,Mysql,Perl,我几乎要发疯了,因为我想通过PHP调用一个perl脚本 我有一个PHP表单,我在其中放入一个MySQL查询,该查询存储在一个文件中,并选择一些变量 如果我调用任何SHELL命令,比如“top”。。。一切正常,但只要我尝试用变量调用我的perl脚本,就根本没有结果 存储结果的文件保持为空 这是PHP文件中的调用部分: if (isset($_POST['submit'])) { $file = 'query.sql'; $query = $_POST['query']; file_put_cont

我几乎要发疯了,因为我想通过PHP调用一个perl脚本

我有一个PHP表单,我在其中放入一个MySQL查询,该查询存储在一个文件中,并选择一些变量

如果我调用任何SHELL命令,比如“top”。。。一切正常,但只要我尝试用变量调用我的perl脚本,就根本没有结果

存储结果的文件保持为空

这是PHP文件中的调用部分:

if (isset($_POST['submit'])) {
$file = 'query.sql';
$query = $_POST['query'];
file_put_contents($file, $query);
$command = "perl /home/www/host/html/cgi/remote-board-exec.pl -sqlfileexec query.sql > /home/www/host/html/cgi/passthrutest.txt";
exec($command, &$ausgabe, $return_var);

没有错误消息,我已经尝试过调试,但没有任何帮助:(

您确定正在执行perl吗?也许您应该用“which perl”替换命令,以确保执行,并使用perl的完整路径。另一个想法是确保:

  • perl脚本是可执行的(使用chmod)
  • 确保它有“#!/usr/bin/perl”(或您的perl路径所在的位置)
  • 在不使用perl命令的情况下,将命令更改为“/home/www/host/cgi/remote board exec.pl…”
  • 转储输出数组的内容($ausgabe),就好像命令无法执行一样,您可能会发现发生了什么

尝试使用exec“/usr/bin/perl/home/www/host/html/cgi/remote-board-exec.pl-sqlfileexec query.sql>/home/www/host/html/cgi/passthrutest.txt”当通过php调用时,您是否假设
perl
在路径中?从命令的角度来看,您是否假设
query.sql
也在当前目录中?如果所有其他操作都失败,请使用绝对路径进行所有操作。只需使用绝对路径进行尝试,结果是相同的…没有任何内容。文件的路径d脚本很好,脚本本身也可以正常工作。但是一旦涉及到->“-sqlfileexec query.sql”,结果是空的。可以尝试从等式中完全删除脚本,只需尝试调用perl即可。
$command=“perl-e\”打印qq{Hello World\\n}
如果这不起作用,那么至少你已经隔离了你的问题。然后在目录中添加一个虚拟脚本作为你的other.pl,它只打印Hello world。这样的增量更改将帮助你找出哪里出了问题。这是我做的第一件事,看看是否允许web服务器运行PERL scripts.Ne尽管如此,我还是发现了问题…因为我使用ssh密钥登录CLI,而Web服务器没有这样的密钥,所以无法工作。PERL脚本应该从不同的服务器获取一些数据,PUTTY可以进行代理转发。感谢您的所有努力和帮助!我非常感谢:)权限已经设置好,脚本本身运行正常。但是一旦有“-sqlfileexec query.sql”被调用,它就会停止。我已经让脚本告诉我$ausgabe,我得到的只是:$return\u var ausgeben 0$ausgabe ausgeben数组(),可能是Perl脚本中断了。尝试将SQL脚本文件的完整路径放入命令中。确保您的参数只有一个
-
而不是
-
脚本的绝对路径,并且生成的命令的输出是fineOk,看起来PHP有问题。我刚刚将PHP应该执行的命令复制到CLI中,并手动执行它。。。在那里,它工作得非常好,结果存储在我提到的文本文件中。有什么地方我可以检查需要哪些权限才能使它正常运行吗?我发现了问题。。。由于我使用ssh密钥登录CLI,而Web服务器没有这样的密钥,因此无法工作。PERL脚本应该从不同的服务器获取一些数据,PUTTY可以进行代理转发。感谢您的努力和帮助!我真的很感激:)