我通常如下从 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();
您的方法不起作用,因为您正在连接所有不带空格的参数,从而有效地使它们成为一个参数。
Try
$perlscript_file = "/var/www/other_scripts/perl/apps/$perlscript.pl $var1 $var2 $var3 $var4";
顺便说一句,如果参数来自外部源,您MUST使用对它们进行消毒escapeshellarg() http://php.net/escapeshellarg。同样适用于$perlscript
- 如果它来自外部源甚至用户输入,请执行escapeshellcmd() http://www.php.net/manual/en/function.escapeshellcmd.php on it.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)