curl 404坏请求

时间:2014-04-22 05:56:52

标签: php curl http-status-code-400

我正在编写一个脚本来检查网站是否已关闭并使用以下php代码

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://help.github.com/articles/why-are-my-commits-linked-to-the-wrong-user ');

curl_setopt($ch, CURLOPT_NOBODY, true);
$return_val = curl_exec($ch);
$code =  curl_getinfo($ch, CURLINFO_HTTP_CODE );
var_dump($code);

它适用于某些网站,但有一些像CURLOPT_URL选项中提到的网站返回400代码

http://www.djangobook.com/en/2.0/chapter10.html这个网址也不起作用

我在我的localhost和远程服务器上尝试过但同样的事情发生了

我还试图添加https://github.com/twilio/twilio-php/blob/master/Services/cacert.pem但仍无法正常工作

我做错了什么???

3 个答案:

答案 0 :(得分:0)

您要求在特定网址上使用HEAD。然后,服务器通过向您发回404响应来说明页面/资源不存在。

这不是客户端问题,服务器说该页面不存在。如果你在没有设置CURLOPT_NOBODY的情况下获得了不同的结果(有时候就是这种情况),那么你实际上可能会责怪服务器没有正确的HTTP兼容性,但这不会让任何人更快乐。

(其他答案可能涉及CURLOPT_SSL_VERIFYPEER和CURLOPT_RETURNTRANSFER等详细信息,但它们当然无关紧要。)

答案 1 :(得分:0)

删除空格str_replace(" ", '%20', $url);

答案 2 :(得分:-2)

您在调用HTTPs URL时需要添加此cURL参数。

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

此外,您需要添加此..

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

给{404}的curl_setopt($ch, CURLOPT_NOBODY, true);评论。

工作代码..

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://help.github.com/articles/why-are-my-commits-linked-to-the-wrong-user');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//curl_setopt($ch, CURLOPT_NOBODY, true);
$return_val = curl_exec($ch);
$code =  curl_getinfo($ch, CURLINFO_HTTP_CODE );
var_dump($code);

<强> OUTPUT :

int 200