You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中使用Curl连接指定URL失败求助:连接被拒绝

解决PHP Curl连接目标URL时出现"Connection refused"的问题

我来帮你一步步排查这个连接拒绝的问题,这种情况通常是网络层面或者配置细节的问题,咱们逐一梳理:

1. 先修正代码里的低级拼写错误

你的代码里有一处明显的笔误:url_setopt($ch, CURLOPT_URL, $url); 应该是 curl_setopt($ch, CURLOPT_URL, $url); —— 少写了一个curl前缀。这个错误可能导致URL配置没生效,先修正它,避免后续排查干扰。

2. 排查网络连通性(最关键的一步)

Connection refused 本质是你的服务器无法和目标服务器的6700端口建立TCP连接,先通过命令行工具验证基础连通性:

  • 在你的PHP服务器上执行:telnet b2b-dev.cenveo.com 6700
    • 如果提示Connection refused,说明目标端口确实没开放,或者服务器/防火墙拦截了请求
  • 或者用curl命令行测试:
    curl -v http://b2b-dev.cenveo.com:6700/dmz/EZComm?fromTp=DiscountLabelsCustomer&toTp=DiscountLabels&operationID=DiscountLabels/1.0/PurchaseOrderRequest
    

如果命令行也连不上,那问题不在PHP代码,而是:

  • 目标服务器的6700端口未对外开放(比如开发环境服务器未启动、端口配置错误)
  • 你的服务器和目标服务器之间有防火墙(公司内网防火墙、云服务器安全组)拦截了6700端口的请求
  • 目标域名解析有问题,可以先ping b2b-dev.cenveo.com 确认解析到的IP是否正确

3. 清理不必要的SSL配置

你的目标URL是http://协议,但代码里配置了多个HTTPS相关的选项:

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch, CURLOPT_SSLVERSION, 3);

这些配置对HTTP请求完全没用,反而可能引发不必要的逻辑干扰,建议全部移除。

4. 检查代理设置(如果你的服务器需要代理上网)

如果你的PHP服务器处于内网,需要通过代理访问外部网络,那你需要给curl添加代理配置:

curl_setopt($ch, CURLOPT_PROXY, '你的代理IP');
curl_setopt($ch, CURLOPT_PROXYPORT, 代理端口);
// 如果代理需要认证
curl_setopt($ch, CURLOPT_PROXYUSERPWD, '用户名:密码');

5. 增加更详细的调试日志

可以在代码里添加获取curl错误码和详细信息的逻辑,帮助定位:

$output = curl_exec($ch);
if ($output === false) {
    echo 'Curl错误码: ' . curl_errno($ch) . '<br>';
    echo '错误信息: ' . curl_error($ch) . '<br>';
    // 获取请求的详细信息
    var_dump(curl_getinfo($ch));
}

先从网络连通性排查入手,这是这类问题最常见的根源,再结合代码细节修正,应该能解决问题。

内容的提问来源于stack exchange,提问作者Muhammed Basheer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:58:15