gpt4 book ai didi

php - CURL php 代码返回 http_code=0 和来自服务器消息的空回复

转载 作者:行者123 更新时间:2023-12-05 09:23:47 27 4
gpt4 key购买 nike

我在多个站点/服务器上运行相同的代码。 2 天前,代码开始在其中一台服务器上返回 http_code = 0 和错误消息“来自服务器的空回复”。

任何人都可以阐明为什么特定服务器一天可以工作,而第二天就不能工作吗?我已经向 ISP 提交了一张票来解释这个问题,但他们似乎无法找到问题所在(目前)。

我想真正的问题是,服务器上会/可能会发生什么变化来阻止它工作?

有趣的是我引用的 url 没有被服务器返回错误所触及。如果我更改 url 以指向不存在的内容,则会返回相同的错误。所以看起来 CURL POST 引用总共被服务器拒绝了。我目前有其他 CURL 脚本正在访问这些问题站点,这些站点仍在运行,但它们中没有 POST 选项。

这个问题肯定与此服务器上的 CURL POST 请求有关,并且它们几乎立即被拒绝。

在有问题的服务器上,我有 15 个以上的独立帐户,每个帐户都返回相同的结果,所以我认为我没有更改任何内容,因为我知道当时我没有对所有网站进行任何大规模更改问题出现了。在我在别处托管的其他 6 个网站中,一切仍然正常,代码完全相同。

我已尝试对我阅读过的帖子中的选项进行各种组合/更改,但没有任何效果,工作站点仍然工作,非工作站点仍然不工作。

function sendWSRequest($url, $xml) {

// $headers[] = 'Content-Type: application/xml; charset=utf-8';
$headers[] = 'Content-Type: text/xml; charset=utf-8';
$headers[] = 'Content-Length: ' . strlen($xml);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, true);
// curl_setopt($ch, CURLINFO_HEADER_OUT, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
// curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);

$result = curl_exec($ch);
if($result===false) {
print 'error with curl - '.curl_error($ch).'<br />';
}

$info = curl_getinfo($ch);

curl_close($ch);

return $result;
}

如有任何帮助,我们将不胜感激。

编辑根据进一步调查总结,当脚本出错时,服务器访问日志中没有任何记录。因此,在授予/记录访问权限之前,包含 POST 选项的 CURL 请求似乎被拒绝了......

干杯

格雷格·J

最佳答案

我知道这是一个旧线程,但我找到了一个可以让其他人头疼的解决方案:

我刚开始在 GoDaddy 托管的网站上遇到这个问题,该网站直到最近才正常运行。为了调查这个问题,我创建了一个 HTML 页面,其中包含一个表单,其中包含通过 cURL 在 POST 数据中提交的相同字段。

浏览器提交的 HTML 表单有效,而 cURL POST 导致 Empty reply from server 错误。因此,我在我的开发系统上使用 PHP apache_request_headers() 函数检查了浏览器提交的 header 与 cURL 提交的 header 之间的区别,其中 cURL 和浏览器提交都有效。

只要我将浏览器提交的“User-Agent” header 添加到 cURL POST,问题站点就会按预期运行,而不是返回空回复:

CURLOPT_HTTPHEADER =>
array("User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0")

我没有尝试其他/更简单的 User-Agent header ,因为这个快速修复解决了我的问题。

关于php - CURL php 代码返回 http_code=0 和来自服务器消息的空回复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18773810/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com