【问题标题】:curl works on Windows 7 but not on CentOScurl 适用于 Windows 7 但不适用于 CentOS
【发布时间】:2017-10-03 15:09:20
【问题描述】:

在 Windows 上完美运行,但在 Linux 上却不行。

收到此错误:

"curl: (35) TCP 连接被对端重置"

$url = 'some_url';
$curl = curl_init();
curl_setopt_array($curl, array(
  CURLOPT_URL => $url,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_SSL_VERIFYPEER => 0,
  CURLOPT_SSL_VERIFYHOST => 0,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_HTTPHEADER => array(
    "content-type: application/json"
  )
));

$response = curl_exec( $curl );
$err = curl_error( $curl );

curl_close( $curl );

这有什么特殊设置吗?

关闭防火墙但同样的错误。知道要尝试什么吗?

【问题讨论】:

    标签: php linux curl


    【解决方案1】:

    这可能是防火墙问题,如果您使用的是VMware,请确保杀毒软件上的防火墙已关闭,同时请检查服务器的防火墙规则。

    或者您可以像我尝试使用 https://example.net 一样检查 URL - 但它们确保“www”。 - 所以当我切换到https://www.example.net 时,一切似乎对我来说都很完美。发送了正确的请求。

    【讨论】:

      【解决方案2】:

      是ssl版本的问题。

      使用“CURLOPT_SSLVERSION => 1”可以正常工作

      我发现:

      • 自 7.18.1 起默认禁用 SSLv2。其他 SSL 版本的可用性可能会有所不同,具体取决于构建使用的后端 libcurl。

      • 自 7.39.0 起默认禁用 SSLv3。

      我在 Linux 上的 curl 版本是 7.29.0(在 Windows 7.55.1 上),所以默认情况下他尝试使用 sslv3 并导致问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-02
        • 2016-11-07
        • 2013-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多