如何解决Laravel Forge - 将项目升级到 Laravel 8 需要 PHP 7.4
我最近将 Forge 托管的项目迁移到 Laravel 8.x。运行 composer install
时部署脚本失败,所有与 PHP 版本错误相关的消息:
Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.
Problem 1
- This package requires php ^7.4 but your PHP version (7.3.26) does not satisfy that requirement.
Problem 2
- Installation request for lcobucci/clock 2.0.0 -> satisfiable by lcobucci/clock[2.0.0].
- lcobucci/clock 2.0.0 requires php ^7.4 || ^8.0 -> your PHP version (7.3.26) does not satisfy that requirement.
...
虽然我这样做了。
至少根据documentation。在此站点的 Meta > PHP Version 中选择了 PHP 7.4。在 PHP 管理中,7.4 是默认的,并更新到最新的补丁。
我重启了 PHP,然后是 Nginx,然后是整个服务器,都没有工作。
通过 SSH,它使用的是 7.3.26:
forge@mistaken-identity:~$ php -v
PHP 7.3.26-1+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Jan 13 2021 08:00:44) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.26,Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.26-1+ubuntu18.04.1+deb.sury.org+1,Copyright (c) 1999-2018,by Zend Technologies
Forge 的 PHP 管理 API 是否已损坏,还是仅在我的服务器上?我希望能够在每个站点的基础上设置 PHP 版本。我该如何解决这个问题?
解决方法
找到了。
Forge 在 PHP 版本管理仪表板上有一个“在 CLI 上使用”按钮,这显然是 Composer 在决定是否安装/升级依赖项时所查看的。我的仍然设置为 7.3 二进制。
在宣布该功能的 blog post 中也简要提到了这一点:
此外,您可以在 CLI 上确定哪个 PHP 版本是“默认”版本。默认的 CLI PHP 版本是在命令行上运行“php”命令时将执行的 PHP 版本。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。