PHP cURL vs file_get_contents

2022-08-30 07:17:44

访问 REST API 时,这两段代码有何不同?

$result = file_get_contents('http://api.bitly.com/v3/shorten?login=user&apiKey=key&longUrl=url');

$ch = curl_init('http://api.bitly.com/v3/shorten?login=user&apiKey=key&longUrl=url');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);

它们都产生相同的结果,判断

print_r(json_decode($result))

答案 1

file_get_contents()是一个简单的螺丝刀。非常适合简单的GET请求,其中标头,HTTP请求方法,超时,cookiejar,重定向和其他重要的事情无关紧要。

fopen()使用流上下文或带有setopt的cURL是您可以想到的每个位和选项的强大支柱。


答案 2

除此之外,由于最近的一些网站黑客攻击,我们不得不更多地保护我们的网站。在这样做的过程中,我们发现file_get_contents不起作用,而curl仍然有效。

不是100%,但我相信这个php.ini设置可能已经阻止了file_get_contents请求。

; Disable allow_url_fopen for security reasons
allow_url_fopen = 0

无论哪种方式,我们的代码现在都适用于 curl


推荐