Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php GET命令提供两种输出,为什么?_Php_Shell_Get - Fatal编程技术网

Php GET命令提供两种输出,为什么?

Php GET命令提供两种输出,为什么?,php,shell,get,Php,Shell,Get,我使用GET命令来获取页面内容。当我在shell提示符上编写相同的命令时,它会给出正确的结果,但当我在PHP文件中使用该命令时,有时它会给出正确的结果,但有时它只给出内容的一半,即仅结束一半 Iam在shell脚本中使用以下命令:- GET http://www.abc.com/ -H "Referer:http://www.abcd.com/" 并在PHP文件中显示以下内容:- $data=exec('GET http://www.abc.com/ -H "Referer:http://ww

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

Iam在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文件中使用该命令时,为什么该命令没有给出页面的全部内容。

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

exec('GEThttp://www.abc.com/ -H“参考:http://www.abcd.com/“,&$数据)

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

可能更容易:

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

假设shell_exec函数(backtick`实际上就是这样)没有被禁用。

纯php的替代方案:


$opts=数组(
“http'=>数组(
'方法'=>“获取”,
“标题”=>“引用者:\r\n”
)
);
$context=stream\u context\u create($opts);
$file=文件内容(“”,false,$context);

你到底为什么不使用curl或fopen而使用LWP?i、 公平地说,当我想很快地将代码拼凑在一起时,我会这样做。虽然,这是我使用过一次然后删除的代码。如果你不打算这样做(@original poster),我建议你看看cURL和fsockopen。

$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);