如何使用PHP下载https文件

时间:2012-07-17 19:33:00

标签: php curl https download security

我需要使用PHP下载xml文件。我可以通过在进行卷曲调用时设置以下选项来读取文件的内容。

curl_setopt ($http, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($http, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($http,CURLOPT_USERAGENT,'XYZ');

从上面的代码片段可以看出,我需要将VERIFYHOST设置为false,并且还需要在调用读取文件时设置显式的USERAGENT,因为该文件不可公开访问,只有特定的应用程序可以调用它来读取它(网络安全技术和东西)

但是如何下载相同的文件,我尝试了readfilefopen/fpassthrufile_get_contents但似乎没有任何效果。 Readfile提供错误failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden

有没有办法为fopenreadfile提供类似curl的选项,我认为这可能是解决此问题的最简单方法。我在PHP文档中找不到太多帮助。

请帮忙。

1 个答案:

答案 0 :(得分:3)

您需要将特殊用户代理附加到流上下文。

来自http://www.php.net/manual/en/wrappers.http.php

  

允许使用HTTP GET方法通过HTTP 1.0对文件/资源​​进行只读访问。 Host:标头随处理请求一起发送,以处理基于名称的虚拟主机。 如果您已配置user_agent string using your php.ini file或流上下文,则它也会包含在请求中

上面链接中的示例#2:

<?php
ini_set('user_agent', "PHP\r\nX-MyCustomHeader: Foo");

$fp = fopen('http://www.example.com/index.php', 'r');
?>