cURL使用命令行成功,但使用php cURL_exec获得504网关超时



我试图在代码中使用phpcurl_setopt获取一些数据。但它加载了2分钟,然后出现504网关超时错误。这是代码:

function sendRequest($url, $data, $token = '') {
$header[] = "Connection: keep-alive";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_HTTP_VERSION, 'CURL_HTTP_VERSION_1_1');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36");
$result = curl_exec($ch);
curl_close($ch);
return $result;
}

奇怪的是,我使用具有相同选项的命令行cURL立即成功地获取了数据:

curl --url "http://x.x.x.x" --header "Connection: keep-alive" --http1.1 --verbose --request "POST" -d "data1=value1" -d "data2=value2" --user-agent "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36"

承载代码和目标的服务器位于同一网络中,并且两台服务器中的防火墙未激活。失败的原因可能是什么?

不知道$data是什么。如果它是关联数组,请尝试

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

最新更新