卷曲PHP http_code说404,但浏览器说它是200

我发现了为什么会发生这种情况,请查看我的答案

这是唯一发生这种情况的域,我在一堆URL上运行curl_multi,这个回来了404 http_code http://www.breakingnews.com

但是当我在浏览器中访问它时,它是200OK(需要一段时间来加载),甚至看起来不像重定向.

谁知道怎么了?这是个常见的问题吗

这是一个var_dump:

 ["info"]=> array(22) { ["url"]=> string(27) "http://www.breakingnews.com" ["content_type"]=> string(24) "text/html; charset=utf-8" ["http_code"]=> int(404) ["header_size"]=> int(337) ["request_size"]=> int(128) ["filetime"]=> int(-1) ["ssl_verify_result"]=> int(0) ["redirect_count"]=> int(0) ["total_time"]=> float(1.152229) ["namelookup_time"]=> float(0.001261) ["connect_time"]=> float(0.020121) ["pretransfer_time"]=> float(0.020179) ["size_upload"]=> float(0) ["size_download"]=> float(9755) ["speed_download"]=> float(8466) ["speed_upload"]=> float(0) ["download_content_length"]=> float(-1) ["upload_content_length"]=> float(0) ["starttransfer_time"]=> float(1.133522) ["redirect_time"]=> float(0) ["certinfo"]=> array(0) { } ["redirect_url"]=> string(0) "" } ["error"]=> string(0) ""

更新:
这实际上看起来像curl_setopt的一个php bug($ch,CURLOPT_NOBODY,true);
https://bugs.php.net/bug.php?id=39611

编辑:这不是一个错误.

最佳答案
我在http://w-shadow.com/blog/2007/08/02/how-to-check-if-page-exists-with-curl/comment-page-1/#comment-12186评论中找到了答案
通过将CURLOPT_NOBODY设置为true,CURL将使用HEAD作为请求,某些服务器不喜欢该请求(例如,forbes)并将返回“来自服务器的Emply reply”.要解决此问题,您还需要设置CURLOPT_HTTPGET以重置为GET请求.

/* don’t download the page, just the header (much faster in this case) */
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPGET, true); //this is needed to fix the issue

转载注明原文:卷曲PHP http_code说404,但浏览器说它是200 - 代码日志