PHP cURL使用代理时出现Connection refused错误求助
PHP cURL连接代理报错"Connection refused"的原因排查
错误信息
Failed to connect to ip port after 1000 ms: Connection refused
代码示例
$curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_PROXY, 'ip'); curl_setopt($curl, CURLOPT_PROXYPORT, 'port'); curl_setopt($curl, CURLOPT_PROXYUSERPWD,'user:pass'); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($curl); if ($result === FALSE) { die(curl_error($curl)); } curl_close($curl);
可能的问题原因
- 代理IP/端口无效:检查代理IP和端口是否完全正确,是否存在拼写错误(比如多空格、数字错位);确认代理服务器是否处于运行状态,是否已经被服务商停用或过期。
- 代理认证失败:
CURLOPT_PROXYUSERPWD里的账号密码是否正确,若密码包含特殊字符(如:、@),需要用urlencode()转义后再拼接。另外,部分代理可能需要特定的认证方式(如NTLM),需额外设置CURLOPT_PROXYAUTH参数。 - 网络访问限制:本地机器或服务器的防火墙、安全组是否禁止了对该代理端口的出站请求;部分运营商会屏蔽某些代理IP,可尝试换网络环境测试。
- 代理类型不匹配:cURL默认使用HTTP代理,若你的代理是SOCKS5类型,需添加
curl_setopt($curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);,否则会导致连接失败。 - 超时时间过短:错误显示1000ms后超时,可能网络延迟导致连接未建立就超时。可尝试延长连接超时时间,比如添加
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);(设置为5秒)。
内容的提问来源于stack exchange,提问作者James Son
相关产品推荐
相关产品推荐

