【问题标题】:can't run laravel 5.7 on php8无法在 php8 上运行 laravel 5.7
【发布时间】:2021-07-26 10:29:55
【问题描述】:

大家好,我需要这个案例的帮助 当我执行“php artisan serve”时,我无法在 php8 上运行 laravel 5.7 我得到了错误:

thrown in /var/www/html/myProject/vendor/laravel/framework/src/Illuminate/Container/Container.php on line 838
PHP Fatal error:  Uncaught ErrorException: Method ReflectionParameter::getClass() is deprecated in /var/www/html/myProject/vendor/laravel/framework/src/Illuminate/Container/Container.php:838

我已尝试将作曲家所需的 php 版本形式 "^7.1.3" 更新为 "php": "^7.1.3|^8.0", 当我运行composer update 时,我又遇到了另一个错误。

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - laravel/framework[v5.7.0, ..., 5.7.x-dev] require php ^7.1.3 -> your php version (8.0.3) does not satisfy that requirement.
    - Root composer.json requires laravel/framework 5.7.* -> satisfiable by laravel/framework[v5.7.0, ..., 5.7.x-dev].

我希望任何机构分享这个案例的解决方案

【问题讨论】:

    标签: php laravel laravel-5 laravel-artisan


    【解决方案1】:

    Laravel 5.7 与 PHP 8 不兼容。如果您想获得 PHP 8 支持,请确保您使用的是最新版本的 Laravel 6、7 或 8。

    您还需要在 composer.json 文件中更新几个常用的依赖项:

    • PHP 转至php:^8.0
    • 伪装成fakerphp/faker:^1.9.1
    • PHPUnit 到 phpunit/phpunit:^9.3

    【讨论】:

    • 好的,我会尝试升级我的 laravel 项目
    【解决方案2】:

    这两个错误是相关的。

    根据The Official DocsLaravel 5.7 只支持 PHP >= 7.1.3。

    试图强制它在 PHP8 上运行会导致一些奇怪的事情,因为 PHP8 有很多改变游戏规则的修复/迁移/弃用。所有这些都可以找到here

    如果你想使用 PHP8,请使用 Laravel 8。如果你想使用 Laravel 5.7,请使用 PHP7。

    如果你必须使用 PHP8 和 Laravel 5.7,我建议你将 composer requiremnet 更改为"php": "^8.0",,但要准备好排查很多问题。

    【讨论】:

      【解决方案3】:

      您可以将exit($e); 放入App\Exceptions\Handler::report() 以提供更好的错误消息。

      【讨论】:

        【解决方案4】:

        删除供应商文件
        然后运行命令composer install

        【讨论】:

          猜你喜欢
          • 2019-07-04
          • 2019-05-21
          • 2019-08-08
          • 2016-07-22
          • 1970-01-01
          • 2020-05-10
          • 1970-01-01
          • 2019-08-08
          • 2014-05-16
          相关资源
          最近更新 更多