[英]error: couldn't connect to host via CURL on same domain
我有一個網址 - http://www.xxx.xxx.xxx/
這個網址,我可以通過瀏覽器打開。 我什至可以從我的機器上通過 cURL 調用這個 URL,但是當我從同一服務器和域上的代碼調用它時,它給了我一個錯誤 - error: couldn't connect to host
以下是我的代碼 -
function get_xml_via_curl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
echo $url;
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
/*curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);*/
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$returned = curl_exec($ch);
if(curl_errno($ch)) {
echo 'error: ' . curl_error($ch);
}
curl_close($ch);
// $xml === False on failure
$xml = simplexml_load_string($returned);
return $xml;
}
就像我說的,在本地主機上這是有效的。 我可以通過瀏覽器直接打開網址。 但是當我在同一台服務器上部署代碼並嘗試通過 cURL 調用時,它給了我一個錯誤 - error: couldn't connect to host
更新代碼 -
我將服務器上的代碼修改為 -
function get_xml_via_curl($url) {
$url = " http://www.xxx.xxx.xxx.xxx/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$returned = curl_exec($ch);
if(curl_errno($ch)) {
echo 'error: ' . curl_error($ch);
}
curl_close($ch);
$xml = simplexml_load_string($returned);
return $xml;
}
並且 curl 的錯誤更改為以下 -
error: Protocol http not supported or disabled in libcurl
您更新的代碼不起作用,因為$url = " http...
由於某些防火牆或名稱服務器問題,原始代碼可能無法正常工作。 嘗試在同一服務器上的瀏覽器中直接訪問要加載的 URL。 那也可能會失敗。
您需要修復服務器以接受來自本地主機的請求。
還可以幫助您檢查 Web 服務器和防火牆日志文件。 查看請求被拒絕的原因。 甚至只是暫時禁用防火牆以排除它。
我遇到了同樣的情況,PHP curl 由於相同的域而拋出“連接超時錯誤”並嘗試了所有其他選項,但沒有任何效果。
最后我得到了答案並修復了它。 只需運行以下命令(ubuntu)
# sudo ifconfig lo up
對於 Cent 操作系統:
# sudo ip link set lo up
# sudo ip addr show
“lo”是環回接口。 這是系統用來與自身通信的特殊網絡接口。
嘗試:
$url="//your url";
echo get_xml_via_curl($url);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.