服务器可以访问代理,但不能访问cURL


Server accessible to proxies but not cURL?

我已经用代理测试了我的本地服务器,我的朋友都可以在他们的浏览器中加载url,但是当我试图在单独的服务器上使用cURL时,它连接失败。

这是URL,它加载在我的浏览器和使用我朋友的互联网:

http://pc.stephen3.com:8080/gameq.php

这是我在一个单独的服务器上使用的代码,它成功地检索所有其他url(如谷歌和雅虎)

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://pc.stephen3.com:8080/gameq.php");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$err = curl_error($ch);
$resp = curl_exec($ch);
echo $resp;
echo $err;

但是它在我的主服务器的url上没有返回任何东西,而

curl_error($ch);

(曾经说过,现在什么都不说)"无法连接到主机"

你知道是什么吗?url可以在任何地方工作,但cURL除外。这段代码在任何地方都可以使用,除了URL。

EDIT:我想到这可能是因为我的外部服务器上的出站流量在端口8080而不是常规服务器的80,我必须测试我的主机是否允许在其他端口上卷曲

也许你必须从URL中删除端口号并配置CURLOPT_PORT选项。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://pc.stephen3.com/gameq.php"); // port removed
curl_setopt($ch, CURLOPT_PORT, 8080);  // that line added
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$err = curl_error($ch);
$resp = curl_exec($ch);
echo $resp;
echo $err;

您也可以使用curl_getinfo($ch)函数获取更多的调试信息。

$report=curl_getinfo($ch);
echo "curl_getinfo returned: <br>".$report;

原来我的主机(iPower)限制cURL到端口80:(

EDIT:我发现支持说谎,说只允许端口80。实际上,它们允许端口80和990 (SSL),但是您可以在不启用SSL的情况下使用端口990。完美的工作。

相关文章: