1

我已经按照 Laravel 文档中所写的为 Laravel 护照安装密码客户端的说明以及默认的 Laravel 6.0 作曲家版本的 guzzle 等进行了安装。我已经在现有项目上完成了安装,并且在本地进行了全新安装dev 环境和实时服务器,每次我尝试发布到 example.com/oauth/token 路由时,都会遇到一个疯狂的 Guzzle 错误,似乎在互联网上没有以前的搜索历史。错误是(总结):

GuzzleHttp\Exception\ServerException

/var/task/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:113

"Return value of Zend\\Diactoros\\normalizeServer() must be of the type array, none returned"

我在所有环境中运行 php 7.3,但尝试了 php 7.2 和 7.1 并得到了相同的结果。我在本地运行 Laravel Valet,在任何其他项目中从未见过这样的事情。我也在用 Laravel Vapor 运行一个登台服务器,我得到了完全相同的错误。我的 guzzle 请求与 Laravel 文档中 Taylor Otwell 的示例几乎完全相同,如下所示:

        $http = new \GuzzleHttp\Client;

        $response = $http->post(env('API_TOKEN_URL'), [
            'form_params' => [
                'grant_type' => 'password',
                'client_id' => env('PASSPORT_CLIENT_ID'),
                'client_secret' => env('PASSPORT_CLIENT_SECRET'),
                'username' => $request['username'],
                'password' => $request['password'],
            ],
        ]);

        return json_decode((string) $response->getBody(), true);

我已经转储了所有变量的数据,以验证用户名、密码、client_id 和 client_secret 是否准确。这似乎根本不是身份验证问题,而是 Guzzle 传递正确的服务器标头的一些问题。我不知道如何解决,因为我在互联网上的其他任何地方都没有这个问题的先前记录。有任何想法吗???

4

1 回答 1

4

如果有人遇到这个问题,只需通过运行将包名称: laminas/laminas-dictoros 更新为最新版本,例如2.2.2

作曲家需要 laminas/laminas-dictoros

问题来自 normalize_server.legacy.php 它不返回任何内容。

于 2020-01-16T02:41:26.633 回答