【问题标题】:Declaration of Illuminate\Container\Container::get($id) must be compatible with Psr\Container\ContainerInterface::get(string $id)Illuminate\Container\Container::get($id) 的声明必须与 Psr\Container\ContainerInterface::get(string $id) 兼容
【发布时间】:2021-06-06 03:01:17
【问题描述】:

安装了新的 Laravel 8 项目并在加载第一个实例时,出现以下错误。这很奇怪,因为我把它放在一边,后来从 Laravel 5.8 -> 6 升级了另一个项目(运行良好),当我去检查网站时遇到了类似的错误。

我已清除作曲家缓存,删除供应商文件夹并重新安装,但似乎无法弄清楚。过去一天一直在为此绞尽脑汁,似乎某些软件包版本不正确,但我不确定从哪里开始进行故障排除。

( ! ) 致命错误:声明 Illuminate\Container\Container::get($id) 必须与 /home/vagrant/ps/vendor/ 中的 Psr\Container\ContainerInterface::get(string $id) 兼容laravel/framework/src/Illuminate/Container/Container.php 第 15 行

Call Stack
#   Time    Memory  Function    Location
1   0.0001  357784  {main}( )   .../index.php:0
2   0.0133  502360  require_once( '/home/vagrant/ps/bootstrap/app.php' )    .../index.php:47
3   0.0133  502360  spl_autoload_call ( )   .../app.php:14
4   0.0133  502424  Composer\Autoload\ClassLoader->loadClass( ) .../app.php:14
5   0.0133  502424  Composer\Autoload\includeFile( )    .../ClassLoader.php:322
6   0.0135  578336  include( '/home/vagrant/ps/vendor/laravel/framework/src/Illuminate/Foundation/Application.php' )    .../ClassLoader.php:444
7   0.0135  578336  spl_autoload_call ( )   .../Application.php:29
8   0.0135  578392  Composer\Autoload\ClassLoader->loadClass( ) .../Application.php:29
9   0.0135  578392  Composer\Autoload\includeFile( )    .../ClassLoader.php:322
10  0.0138  588440  include( '/home/vagrant/ps/vendor/laravel/framework/src/Illuminate/Container/Container.php' )   .../ClassLoader.php:444

【问题讨论】:

    标签: php laravel vagrant


    【解决方案1】:

    您使用的是什么版本的 PHP?看起来这个问题正在发生,因为在五天前发布的 v1.0.0 和 v.1.1.0 之间添加了静态类型到 psr/container 以弃用 PHP

    https://github.com/php-fig/container/blob/1.0.0/src/ContainerInterface.php#L23

    https://github.com/php-fig/container/blob/1.1.0/src/ContainerInterface.php#L22

    psr/container 固定到 v1.0.0 应该可以解决此问题,直到 Illuminate 更新

    【讨论】:

    • 谢谢,这正是问题所在。当我使用 phpinfo() 查看输出的内容时,当我的 CLI 版本为 7.4 时,它使用的是 7.1.3 版本。更改配置后快速重启服务器并运行。
    • 我已经尝试了将近一周的时间来解决这个问题。非常感谢您在这里的回答。在我的composer.json底部插入"psr/container": "1.0.0",运行更新,然后部署,现在效果很好。非常感谢您的回答@cLin
    • 今天遇到了同样的错误,我不确定我是否理解解决方案我在哪里插入 "psr/container": "1.0.0" 是“require:{}”或“require-dev:{}”的根目录下的主 composer.js
    • @Wells - 是的,在主 composer.jsrequire 部分应该可以解决问题。
    • 在 composer.json 中添加 "psr/container": "1.0.0" 时,我得到这个页面不工作 http 错误 500
    【解决方案2】:

    ( ! ) 致命错误:声明 Illuminate\Container\Container::get($id) 必须与 /home/vagrant/ps/vendor/ 中的 Psr\Container\ContainerInterface::get(string $id) 兼容laravel/framework/src/Illuminate/Container/Container.php 第 15 行

    就我而言,我使用的是 composer 1.10 并升级到了 2.0 版。 作曲家将降级到 Psr\Container 的 1.0.0 版本,如果您需要返回作曲家 1,请使用以下命令:

    composer self-update --1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-06
      • 2021-06-24
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2016-10-20
      • 2021-02-19
      • 2017-01-25
      相关资源
      最近更新 更多