Guz*_*tra 2 php web-hosting composer-php laravel-8
所以我想将我的 Laravel 8 项目上传到虚拟主机,但是当我完成时,出现了一条错误消息:
Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.1.0". You are running 8.0.7. in /storage/ssd4/678/18965678/laravel/vendor/composer/platform_check.php on line 24
Run Code Online (Sandbox Code Playgroud)
我在虚拟主机上检查了PHP版本后,仅取决于版本8.0。
我尝试将我的 PHP 降级到7.4和8.0版本并重新上传到虚拟主机,但错误越来越严重。
我认为这与 Composer 有关(?),但我不确定什么以及如何解决它。
有人对此有建议吗?非常感谢。
*编辑完成的错误
我认为这与 Composer 有关(?),但我不确定什么以及如何解决它。
是的,您正在执行 Composer 命令,假设您的项目中composer install有一个文件。composer.lock
当 Composer 从锁定文件(默认命名composer.lock)安装时,它会检查平台,以便您不会在未被注意到的情况下安装不兼容的依赖项。
如果平台存在偏差(PHP 版本、安装的 PHP 扩展等),则会发出通知:
Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.1.0". You are running 8.0.7. in /storage/ssd4/678/18965678/laravel/vendor/composer/platform_check.php on line 24
这基本上意味着锁定文件引用的依赖项(如果要安装它们)将与 Composer 在composer install运行的系统上检测到的 PHP 版本不兼容。
与错误消息进行比较:8.1.0 需要等于或大于该版本的 PHP 版本,但检测到的 PHP 版本8.0.7低于该版本。
解决方案在一定程度上取决于他们如何处理固定版本以及平台的采购和管理。
鉴于锁定文件中的固定版本是领先的,这需要平台匹配。在基于 Composer 的 PHP 项目中经常出现这种情况,因此我怀疑这也是他们的设置(该项目在文件中附带了定义的依赖项配置composer.lock )。
那么解决办法就比较简单了:由于PHP版本太低,你执行的系统composer install 至少需要升级到PHP版本8.1.0。通常您会选择该系列中的最新内容8.1.x。
更改系统配置后,您可以再次运行 Composer 安装命令,Composer 平台检查现在应该成功通过。
理论就讲这么多。
我的PHP版本已经是8.1.6先生,我不知道为什么会出现这样的错误。据我所知,我使用的主机仅支持 PHP 8.0
托管是您收到错误的系统。my是您创建锁定文件的系统。
现在这会导致一个问题。当您分发锁定文件时,它使用的是错误的平台。有两种方法可以处理这个问题,这两种方法都是为了在您的系统和托管系统之间调整 PHP 版本:
您可以执行 1.、2. 甚至两者都可以,它们并不相互排斥。
通常最简单的是 1. 因为它不涉及系统配置。
但是 2. 有更多的特性可以有利于您的 PHP 项目开发。
这是 Composer 项目配置中的一个选项。将 PHP 平台版本配置为您的主机之一 ( 8.0.7):
$ composer config platform.php 8.0.7
Run Code Online (Sandbox Code Playgroud)
(成功时该命令不会产生任何输出;另请参阅告诉 Composer 使用不同的 PHP 版本)
之后,您必须更新项目依赖项,因为 Composer 现在使用配置的 PHP 版本8.0.7来解析依赖项:
$ composer --no-plugins --no-ansi -n update --no-scripts
Loading composer repositories with package information
...
Updating dependencies
...
Generating autoload files
Run Code Online (Sandbox Code Playgroud)
这会更新锁定文件,同时注意仅需要与该 PHP 版本兼容的依赖版本。
现在提交锁定文件并用它发布项目。
$ composer validate --no-check-publish \
&& git add composer.json composer.lock \
&& git commit -m "configure, update and lock dependencies" \
&& git push hosting
...
Run Code Online (Sandbox Code Playgroud)
通常,您应该使用与运行该项目的系统上使用的相同的 PHP 版本来开发 PHP 项目。这有助于防止 PHP 运行时配置出现偏差时出现问题,例如您的情况中的 PHP 版本不同。
请参阅您的团队开发文档,了解如何在开发盒上配置 PHP 运行时。如果没有团队并且项目文档也没有涵盖它,如果手头没有专业的系统管理人员可以咨询,请查阅您的系统操作或操作系统手册。
这通常是通过系统包管理器完成的。例如,我的系统上安装了几个 PHP 版本。然后,在每个项目开发环境中,我指定要使用的 PHP 版本并使用它进行开发。例如,Composer 与该 PHP 版本一起运行。