【问题标题】:Laravel 6 with laravel passport, weird Guzzle error带有laravel护照的Laravel 6,奇怪的Guzzle错误
【发布时间】:2020-04-25 15:26:48
【问题描述】:

我已按照 Laravel 文档中所写的为 Laravel 护照安装密码客户端的说明以及默认的 Laravel 6.0 作曲家版本的 guzzle 等进行了安装。我已经在现有项目上完成了安装,并且是全新安装,在本地开发环境和实时服务器上,每次我尝试发布到 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 传递正确的服务器标头的一些问题。我不知道如何解决,因为我在互联网上的其他任何地方都没有这个问题的先前记录。有什么想法???

【问题讨论】:

  • 我面临同样的问题。我倾倒了所有桌子,包括护照迁移表。之后它开始给出这个错误。你的运气好吗?
  • 我通过在作曲家中更改护照版本并运行作曲家更新,然后恢复,让我的环境再次工作。我发现我的代码中一定有错误,因为我从另一个项目复制了一个 guzzle 请求,当我在新的全新护照安装上运行它时,一切正常。我认为这更多地与错误消息有关,而不是其他任何事情。代码中可能存在我们刚刚没有看到的错误。

标签: laravel curl guzzle laravel-passport laravel-vapor


【解决方案1】:

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

composer 需要 laminas/laminas-dictoros

问题出在 normalize_server.legacy.php 它不返回任何东西。

【讨论】:

    猜你喜欢
    • 2021-08-31
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 2012-10-24
    • 2018-04-27
    • 2018-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多