Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory' 未找到 Laravel 护照

Posted

技术标签:

【中文标题】Symfony\\Bridge\\PsrHttpMessage\\Factory\\DiactorosFactory\' 未找到 Laravel 护照【英文标题】:Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory' not found Laravel passportSymfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory' 未找到 Laravel 护照 【发布时间】:2020-07-18 11:22:21 【问题描述】:

大家好,我正在使用 sfelix-martins/passport-multiauth 基于 laravel 护照

我收到此错误
message: "Class 'Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory' not found",…
message: "Class 'Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory' not found"
exception: "Error"
file: "/app/vendor/smartins/passport-multiauth/src/Facades/ServerRequest.php"
line: 17
trace: [,…]
这是我的作曲家
"require": 
    "php": "^7.2.5",
    "fideloper/proxy": "^4.2",
    "fruitcake/laravel-cors": "^1.0",
    "guzzlehttp/guzzle": "^6.5",
    "laravel/framework": "^7.0",
    "laravel/tinker": "^2.0",
    "laravel/ui": "^2.0",
    "smartins/passport-multiauth": "^6.0",
    "symfony/psr-http-message-bridge": "^2.0"
,

注意:当我将这个文件 (DiactorosFactory.php) 放在我旧的 laravel 项目的目录中时 效果很好。

【问题讨论】:

遇到同样的问题 【参考方案1】:

如您在 Readme.md 中所见:https://github.com/symfony/psr-http-message-bridge/blob/26068fa40d91305529cb168997c0b528bb6eef07/CHANGELOG.md

使用 DiactorosFactory 已被弃用,并在 2.0.0 版中被移除

Deprecated DiactorosFactory, use PsrHttpFactory instead

您将在此处找到如何在您的代码中替换它的解决方案: https://github.com/sfelix-martins/passport-multiauth/pull/123/files#diff-b37981c79b4592847e664547ec085670454b57df4d701cd6218930b55169930fR17-R24

你可以在这里找到如何使用新东西的官方文档: https://symfony.com/doc/current/components/psr7.html#usage

【讨论】:

这些链接将来可能会损坏。您还可以在答案中添加必要的信息吗?【参考方案2】:

看起来该软件包在其下一个版本 (7.0) 中解决了该问题。如果您升级到最新版本,这将解决您的问题。

如果您无法升级该软件包,那么您的另一个选择是将symfony/psr-http-message-bridge 降级到版本^2.0。这也会将laravel/passport 降级到版本 8.4.0。

【讨论】:

以上是关于Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory' 未找到 Laravel 护照的主要内容,如果未能解决你的问题,请参考以下文章