curl php HTTP/2流0未干净关闭

eiee3dmh  于 2022-11-24  发布在  PHP
关注(0)|答案(2)|浏览(220)

我尝试使用cURLPHP发送请求,但它抛出了一个错误。
HTTP/2流0未完全关闭:方案错误(错误1)
我正在发送CURLOPT_HTTP_VERSION,如下所示

curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);

使用curel_version()打印的cURL信息为

Array
(
    [version_number] => 475136
    [age] => 4
    [features] => 11518877
    [ssl_version_number] => 0
    [version] => 7.64.0
    [host] => x86_64-apple-darwin18.2.0
    [ssl_version] => OpenSSL/1.0.2q
    [libz_version] => 1.2.11
    [protocols] => Array
        (
            [0] => dict
            [1] => file
            [2] => ftp
            [3] => ftps
            [4] => gopher
            [5] => http
            [6] => https
            [7] => imap
            [8] => imaps
            [9] => ldap
            [10] => ldaps
            [11] => pop3
            [12] => pop3s
            [13] => rtmp
            [14] => rtsp
            [15] => scp
            [16] => sftp
            [17] => smb
            [18] => smbs
            [19] => smtp
            [20] => smtps
            [21] => telnet
            [22] => tftp
        )

    [ares] => 1.15.0
    [ares_num] => 69376
    [libidn] => 
    [iconv_ver_num] => 0
    [libssh_version] => libssh2/1.8.0
    [brotli_ver_num] => 16777223
    [brotli_version] => 1.0.7
)

PHP版本:PHP Version => 7.3.2
homebrew一起安装。
我已经尝试了SO上几乎所有的解决方案,但是仍然得到同样的错误。我需要从源代码下载并编译PHP吗?任何线索/建议都将是巨大的帮助。谢谢。

olmpazwi

olmpazwi1#

我有一个类似的问题,有两件事我需要检查。
如果你使用的是apache,在/etc/apache 2/sites-available/[x].conf中查找类似下面的行:协议H2 http/1.1
[x]=网站配置文件的名称,如00-默认
对我来说,我有协议h2 https://1.1,这导致我有错误。
备选方案:在您的服务器上运行以下命令“grep -ir 'upgrade' /etc/apache 2/”找到升级到http/2的文件并注解掉该行。
这篇文章对我帮助很大:https://community.cloudflare.com/t/ssl-causing-website-to-not-load-at-all/39764/30

xeufq47z

xeufq47z2#

我用这个代码解决了我的问题。

curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);

相关问题