无法在 php8 上运行 laravel 5.7

Posted

技术标签:

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

大家好,我需要这个案例的帮助 当我执行“php artisan serve”时,我 我得到了错误:

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].

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

【问题讨论】:

【参考方案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

【讨论】:

以上是关于无法在 php8 上运行 laravel 5.7的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.7 中的“无法清除缓存。请确保您具有适当的权限”

无法在 laravel 5.7 中定义关系

Laravel 5.7:构建时目标不可实例化

laravel 旧版本不支持 php 8.0.8

Laravel 5.7 - 上传到公共文件夹

Laravel 5.7 无法连接到 Windows 上的 SQLSRV 数据库(找不到驱动程序)