端口88的IPTV API获取JSON数据失败问题求助
解决PHP cURL无法连接IPTV API的问题
先修复代码中的明显错误
你的代码存在几个直接导致连接失败的问题:
- 变量声明缺失
$:ch = curl_init();需改为$ch = curl_init(); - URL包含无效空格:
& action中的空格会破坏URL结构,浏览器会自动转义,但cURL会原样发送,请删除空格改为&action - 错误发送响应头:
Access-Control-Allow-Credentials是服务器返回的响应头,不需要作为请求头发送,应移除
修改后的完整代码
<?php $url = "http://mytv-extra.com:88/player_api.php?username=4240670294&password=0301902562&action=get_live_streams&category_id=3045"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 添加超时设置,避免短时间内判定连接失败 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($ch, CURLOPT_TIMEOUT, 15); // 仅保留必要的请求头 $headers = [ 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0', ]; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $response = curl_exec($ch); $info = curl_getinfo($ch); print_r($info); if ($response === false) { echo 'Curl error: ' . curl_error($ch); } else { echo $response; } curl_close($ch); ?>
进一步排查网络层面问题
若修改代码后仍失败,按以下步骤定位问题:
- 服务器命令行测试:在运行PHP的服务器上执行命令行curl,查看详细连接过程:
若命令行也失败,说明是服务器网络问题,而非PHP代码问题。curl -v "http://mytv-extra.com:88/player_api.php?username=4240670294&password=0301902562&action=get_live_streams&category_id=3045" - 端口连通性测试:用telnet或nc测试目标端口是否可达:
若连接被拒绝,可能是服务器防火墙禁止出站访问88端口,或目标服务器的防火墙拦截了你的服务器IP。telnet mytv-extra.com 88 # 或 nc -zv mytv-extra.com 88 - 确认IP白名单:再次联系服务商,确认运行PHP的服务器公网IP是否在API的允许访问列表中(本地浏览器IP和服务器IP不同,可能存在IP限制)。
- 检查PHP cURL配置:查看php.ini中是否配置了正确的
curl.cainfo(虽HTTP请求不需要CA证书,但存在HTTPS跳转时可能影响),同时确认服务器未禁用cURL扩展。
内容的提问来源于stack exchange,提问作者AICoding
相关产品推荐
相关产品推荐

