这是使用 PHP 和 Curl 时出现的问题(在托管服务器上)。我正在尝试控制端口
54512
上的远程设备(LED 状态)(例如)。 $url
包括与短 CGI 命令连接的 IP:port
数字。
以下是代码片段;
$sensorIP = "77.134.85.187:54512"; // IP:port format
$url = $sensorIP . "/setParam.cgi?DOStatus_02=0" ; // set E2210 LED off
echo $url; //
$result = accessURL ($url); // set LED state on E2210 remote unit
此代码超时。当我在网络浏览器中使用 $url 作为地址时,它工作正常。所以接收端口54512没有被阻塞。当我使用
IP:80
形成 $url
时,它工作正常(接收端口设置为 80)。我尝试使用 CURLOPT_PORT
选项,PHP 脚本仍然超时。
发送服务器传出 HTTP 不会阻止任何端口号,我与我的托管公司核实过。他们认为我有一个编程错误,但错误在哪里?
解决方法:
尝试
$sensorIP = "http://77.134.85.187:54512";
确保出站端口 54512 已打开(请咨询您的托管提供商)
在
curl_exec()
功能之后,添加$output = curl_getinfo($ch);
并打印并检查输出。你可以从中得到一些信息。请勿将端口号作为 url 的一部分。请改用以下内容:
curl_setopt($ch, CURLOPT_PORT, '54512');
我最近也遇到了同样的问题。 我几乎尝试了一切,但还没有运气 据我了解,curl 不适用于除 80 之外的其他端口。 因此,这里最好的解决方案是在端口 80 上解决curl问题,这样您就不会像我现在那样遇到任何问题。 希望这些信息对您有帮助。