开发者

php curl problem

开发者 https://www.devze.com 2022-12-14 22:26 出处:网络
I am trying to get information of remote file with curl. Problem is that other web-serveris on port 81.

I am trying to get information of remote file with curl. Problem is that other web-server is on port 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);
?>

And as you can see it doesnt work.


What happens if you specify the port number in the URI ?

What I mean is first remove the CURLOPT_PORT line, and, then, modify the CURLOPT_URL one to add the port number :

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


Edit after the comment : I just tryied this portion of code :

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

And I get this output :

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

So, the code seems to be OK.

Are you sure there is not a firewall or anything or your network, that prevents you from doing HTTP requests on port 81 to that server ?
Does it work when you type that URI in your browser ?


Not sure if you're using SELinux or not (e.g. under Centos) but you may need to allow this specific permission (non-typical ports):

setsebool -P httpd_can_network_connect on

I would also strongly suggest adding additional configuration options to get any error output from CURL such as:

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


Your original code works fine for me. Returns:

<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 />

Perhaps the port is being blocked by your firewall?

P.S. The echo in your code is redundant. The curl_exec prints the result to the output buffer unless you set CURLOPT_RETURNTRANSFER as TRUE.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号