GET命令给出了两种输出,为什么?

时间:2010-04-20 12:20:01

标签: php shell get

我使用GET命令来获取页面的内容。当我在shell提示符上写相同的命令时,它给出了正确的结果,但是当我在PHP文件中使用它时,有时候它会给出正确的结果,但有时它只给出一半的内容即仅限上半部分。

我在shell脚本中使用以下命令: -

GET http://www.abc.com/ -H "Referer:http://www.abcd.com/"

并在PHP文件中跟随: -

$data=exec('GET http://www.abc.com/ -H "Referer:http://www.abcd.com/"');
echo $data;

现在请告诉我为什么当我在php文件中使用它时,这个命令没有提供页面的完整内容。

3 个答案:

答案 0 :(得分:2)

exec仅返回命令输出中的最后一行。要返回完整输出,请通过引用传入第二个参数:

exec('GET http://www.abc.com/ -H "Referer:http://www.abcd.com/"', &$data);

$data将是一个数组,每行输出一个元素

答案 1 :(得分:1)

可能更容易:

$data = `GET http://www.abc.com/ -H "Referer:http://www.abcd.com/"`;
echo $data;

假设没有禁用shell_exec函数(这实际上就是反引号)。

答案 2 :(得分:0)

纯php的另一种选择:


$opts = array(
    'http'=>array(
        'method'=>"GET",
        'header'=>"Referer: http://www.abc.com/\r\n"
  )
);
$context = stream_context_create($opts);
$file = file_get_contents('http://www.abc.com/', false, $context);