php curl问题

时间:2009-12-19 17:09:37

标签: php curl

我正在尝试使用curl获取远程文件的信息。问题是其他网络服务器在81端口。

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt ($ch, CURLOPT_PORT , 81);
curl_setopt($ch, CURLOPT_URL, 'http://98.246.25.185/server_status2.php');
$store = curl_exec ($ch);
echo substr($store, 1);
curl_close ($ch);
?>

正如你所看到它不起作用。

3 个答案:

答案 0 :(得分:5)

如果在URI中指定端口号,会发生什么?

我的意思是首先删除CURLOPT_PORT行,然后修改CURLOPT_URL一行以添加端口号:

curl_setopt($ch, CURLOPT_URL, 'http://98.246.25.185:81/server_status2.php');


在评论后编辑:我刚尝试了这部分代码:

$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, true);
//curl_setopt ($ch, CURLOPT_PORT , 81);
curl_setopt($ch, CURLOPT_URL, 'http://98.246.25.185:81/server_status2.php');
$store = curl_exec ($ch);
echo substr($store, 1);
curl_close ($ch);

我得到了这个输出:

Online Peak: 59
Online: 17
Distributive server: Online
Agent server: Online

所以,代码似乎没问题。

您确定没有防火墙或任何网络或网络阻止您在端口81上向该服务器发出HTTP请求吗?
在浏览器中输入该URI时是否有效?

答案 1 :(得分:2)

不确定您是否使用SELinux(例如在Centos下),但您可能需要允许此特定权限(非典型端口):

setsebool -P httpd_can_network_connect on

我还强烈建议添加其他配置选项以从CURL获取任何错误输出,例如:

curl_setopt($ch,CURLOPT_FAILONERROR,1);
$data = curl_exec($ch);
$curl_errno = curl_errno($ch);
$curl_error = curl_error($ch);
if($curl_errno > 0)
    die("cURL Error ($curl_errno): $curl_error");

答案 2 :(得分:1)

您的原始代码适用于我。返回:

<b>Online Peak: </b>59        <br /><b>Online: </b> 17<br /><b>Distributive server:</b> <font color=green>Online</font><br /><b>Agent server:</b> <font color=green>Online</font><br />

可能是防火墙阻止了端口?

P.S。 代码中的回显是多余的。除非您将curl_exec设置为CURLOPT_RETURNTRANSFER,否则TRUE会将结果打印到输出缓冲区。