php - 从 PHP 调用 Perl 脚本并传入变量,同时还使用可变的 perl 脚本名称

标签 php perl integration

我通常如下所示从 PHP 调用 perl 脚本并以这种方式传递变量,并且它工作正常,但是现在我正在构建一个组件以供重用,我还想在其中改变我传递的 perl 脚本名称这让我有些头疼,所以我想知道是否有人可以指出更好的方法来做到这一点,因为我的方法不起作用..谢谢..

没有可变 perl 文件名的工作方式:

$file = "/var/www/other_scripts/perl/apps/perlscript.pl $var1 $var2 $var3 $var4";
ob_start();
passthru($file);
$perlreturn = ob_get_contents();
ob_end_clean();

我试图改变似乎对我不起作用的 perl 文件名,你可以在上面看到它是如何在初始“”中包括 $var(s),我觉得这很奇怪但是似乎是它工作的唯一方式,我不确定如何用可变的 perl 文件名复制它:

$perlscript_file = "/var/www/other_scripts/perl/apps/" . $perlscript .".pl";

$file = $perlscript_file . $var1 . $var2  .$var3 . $var4;
ob_start();
passthru($file);
$perlreturn = ob_get_contents();
ob_end_clean();

最佳答案

您的方法不起作用,因为您连接所有参数时没有空格,实际上使它们成为一个参数。

尝试

$perlscript_file = "/var/www/other_scripts/perl/apps/$perlscript.pl $var1 $var2 $var3 $var4";

顺便说一句,如果参数来自外部来源,您必须使用escapeshellarg() 清理它们. $perlscript 也是如此——如果它来自外部源甚至用户输入,则执行 escapeshellcmd()在上面。

关于php - 从 PHP 调用 Perl 脚本并传入变量,同时还使用可变的 perl 脚本名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3438626/

相关文章:

php - 使用 SSL/TLS HTTPS 将 PDF 表单提交到 PHP 页面?

php - 带有在线服务器和数据库的 Electron 桌面应用程序?

mysql - 如何将带有变量的文本存储到数据库中?

php - 将 Python 或 Perl 与 PHP 集成

php - 建模人员/公司角色

php - 存储值供以后在没有数据库的情况下使用

linux - 通过 SSH 传递脚本和字符串

linux - NET::SSH2 带 sudo

ios - Phonegap 应用程序中的 UserVoice 集成

php - 使用 PHP 和 MySql 将 Paypal 与我的后端集成