服务器可以访问代理而不是cURL?

时间:2013-03-03 20:49:41

标签: php apache curl

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

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

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

以下是我在单独服务器上使用的代码,它成功检索了所有其他网址(如google和yahoo)

$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);

(确实说,现在什么也没说)“无法连接到主持人”

任何想法可能是什么?网址无处不在,但在cURL中。代码可以在任何地方使用,但使用URL。

编辑:我想到可能是因为我的外部服务器上的出站流量是8080端口,而不是普通服务器的80,我必须测试我的主机是否允许卷曲其他港口。

2 个答案:

答案 0 :(得分:0)

可能您必须从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;

答案 1 :(得分:0)

事实证明我的主机(iPower)将cURL限制为端口80 :(

编辑:我发现支持说谎,说只允许端口80。实际上,它们允许端口80和990(SSL),但您可以使用端口990而无需实际使用SSL。效果很好。