为什么file_get_contents()似乎与curl_exec()具有相同的访问权限?

时间:2015-02-05 22:12:25

标签: php

我正在使用PHP下载favicons并且我花了一段时间进行故障排除,之后我发现curl_exec似乎适用于某些网站而file_get_contents没有。

例如,这里是来自http://www.hellmanns.com/favicon.ico

的回复

的file_get_contents

  

警告:file_get_contents(http://hellmanns.com/favicon.ico):失败   打开流:HTTP请求失败! HTTP / 1.0 403禁止进入   /home/arcmarks/public_html/arcmarks/source/class.FaviconFinder.php on   第44行

curl_exec

  

H(   e?Câ¬^ÏÉÌŒ$ B#(ÌlcYfƒy9C¥D;üès¨H8§¥§<&amp;5é¨QÛœJ©O5Öžfå§LíáÛÜ߸nÜ®Œa~†} ... l   “'±“○}þþþ¥FHòòÞïïï/ A±mžç¿〜L“ - ,y¾i'öá̳²¶£A%«§¬UIU©?“I²〜AH *®^ÖáμÅÅ™ØezU[¢&LT;4¡- 5; /ïÀöæØaéìÐ̆CN   ,; U @N㽧õðî‰Õ¨î¹¹k_jÖšmîÙÌáÜÝ[æ™-ì·D¡-swE <#õ¹“$ 0”6&amp;ï²1Ú|Žž#“+ $§HR¢@ 3€,3 @ @ÿÿþÿÿÿÿþÿÿP:H€ ô¯VüáBâ™?“Ĵ   W~±|†ôòóaQŸE7Ç| @ F2?G2?åóãäå¸~Q   P,千电子伏(CUD)#lUH4mkr $ GJ [ahVf9&安培; 2SE / @ ZLwPYiF0qOG Y'GT;?!QbJx + cIMDzW - ]。*'T5B;&LT; ^%T6   _XsR =`:n“A7831o Nÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ

2 个答案:

答案 0 :(得分:0)

403响应错误表示服务器拒绝了file_get_contents发出的请求。

Curl和file_get_contents不会发出相同的HTTP请求。

至少CURL将使用不同的用户代理标头。

通常,CURL比使用file_get_contents加载远程文件更优越,更快。

答案 1 :(得分:0)

curl_exec基于并且在许多不同语言中使用的整个项目请参见此处:

Why doesn't file_get_contents() appear to have the same access as curl_exec()?

因此它有更多的支持。