Php Facebood SDK在标头中返回HTTP/2

Php Facebood SDK在标头中返回HTTP/2,php,regex,facebook,Php,Regex,Facebook,我正在使用facebook SDK对用户进行身份验证并获取facebook页面列表。SDK在我的开发服务器上运行良好,但在生产服务器上崩溃。调试时,我发现dev和生产服务器上的头响应不同 dev服务器上的头响应是HTTP/1.1,而生产服务器上的头响应是HTTP/2,它破坏了正则表达式和SDK SDK中有一个名为 /vendor/facebook/graph-sdk/src/Facebook/Http/GraphRawResponse.php 功能是: public function setH

我正在使用facebook SDK对用户进行身份验证并获取facebook页面列表。SDK在我的开发服务器上运行良好,但在生产服务器上崩溃。调试时,我发现dev和生产服务器上的头响应不同

dev服务器上的头响应是HTTP/1.1,而生产服务器上的头响应是HTTP/2,它破坏了正则表达式和SDK

SDK中有一个名为

/vendor/facebook/graph-sdk/src/Facebook/Http/GraphRawResponse.php
功能是:

public function setHttpResponseCodeFromHeader($rawResponseHeader)
    {
        preg_match('|HTTP/\d\.\d\s+(\d+)\s+.*|', $rawResponseHeader, $match);

        $this->httpResponseCode = (int)$match[1];
    }
根据正则表达式,必须有一个带小数点的十进制数,但在生产中只有2,这就破坏了它

我的问题是:它是否与我在生产中的服务器配置有关,或者facebook正在发送这些标题。如果facebook正在发送标题,那么为什么它的行为会有所不同,因为我有相同的SDK版本。
如果是某个服务器问题,那么如何解决它?

将SDK更新为当前版本-该方法的代码已被修改,可能是为了考虑HTTP/2


将SDK更新为当前版本-该方法的代码已被修改,它工作起来非常有魅力,请添加此作为答案,以便我可以接受。
public function setHttpResponseCodeFromHeader($rawResponseHeader)
{
    // https://tools.ietf.org/html/rfc7230#section-3.1.2
    list($version, $status, $reason) = array_pad(explode(' ', $rawResponseHeader, 3), 3, null);
    $this->httpResponseCode = (int) $status;
}