无法在 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:^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的主要内容,如果未能解决你的问题,请参考以下文章