将文件从file()传递给Perl程序PHP

时间:2012-02-21 15:46:32

标签: perl localhost easyphp

我有一个PHP代码,它通过file()方法存储url的内容,如

$contents=file("http://www.rcsb.org/pdb/files/2AID.pdb"); 

我需要通过shell_exec()方法将这些$内容传递给perl程序,如下所示

$result=shell_exec("perl_prog.pl $contents");

我的问题是如何将这个$内容传递给Perl程序。我试过跟随

@file=<@ARGV>;

但它不起作用。请帮帮我。

1 个答案:

答案 0 :(得分:3)

那个shell_exec()代码完全容易受到shell注入攻击 - 你相信远程服务不会包含以下内容:

; rm -rf /

同样,file()将文件内容作为数组返回 - 您无法直接通过命令行传递数组。只有字符串。

更安全的版本是:

$contents = file_get_contents('http://etc....');
$safe_contents = escapeshellarg($contents);
$result = shell_exec('perl_prog.pl $safe_contents');

在Perl方面,你可以使用

my ($contents) = @ARGV;