你的Composer依赖项需要PHP版本">= 8.1.0"。

28

我在使用 Laravel 9 时遇到了这个错误,我已经安装了 PHP 8.1.7。

Composer 检测到您的平台存在问题:您的 Composer 依赖项需要 PHP 版本 ">= 8.1.0"。

我发现其他人也问过这个问题,但似乎没有解决方案可行。


5
看起来你有多个 PHP 版本。在使用 Composer 的同一个终端中,输入 php -v - Markus Zeller
1
/usr/local/bin# php -v PHP 8.1.7 (cli) (built: Jun 25 2022 08:12:59) (NTS) 版权所有 (c) PHP Group Zend Engine v4.1.7,版权所有 (c) Zend Technologies 带有 Zend OPcache v8.1.7,版权所有 (c) Zend Technologies卸载并重新安装 Laravel(laravel 9),问题仍然存在。 - Mendy Kahan
1
在执行 composer install 时,这个问题是何时发生的? - Sujith Sandeep
你能详细说明一下你的环境吗?你是如何访问composer的? - Sibidharan
1
你可以在vendor/composer/platform-check文件中注释检查php版本的代码,并将其替换为False条件,例如if (1==2)。 - Jamal Azizbeigi
15个回答

53

提示

composer.json文件中添加以下行:

{
    "config": {

        "platform-check": false
    }
}

或者设置版本:

{
    "config": {

        "platform": {
            "php": "7.1.0"
        }
    }
}

然后运行composer dump-autoload


17
如果您全局安装了Composer,只需运行composer global update即可解决问题。

enter image description here


在 PHP 8.1 上运行 Valet Windows 命令可以正常工作,但在 7.4 上则不行,因为 Valet 的依赖关系中的一个依赖项需要 8.1。这个答案解决了我的问题。 - Studocwho

13

我有过同样的问题,因为我在命令行中配置了PHP 8.1的版本,而保留了PHP模块的8.0版本。

所以PHP_VERSION_ID给出的是80020,而php -v给出的是8.1.7。

这提醒我重新配置PHP模块为PHP版本8.1:

sudo a2dismod php8.0

sudo a2enmod php8.1

sudo systemctl restart apache2

然后一切都按预期运作。

参考:


我刚刚额外发布了这个链接。我不得不在Debian服务器上安装php 8.1,并使用$sudo update-alternatives --config php进行选择。然后一切正常运行。 - Taranis

8

不要更改您的应用程序中的任何内容。在您的共享主机中,转到 cPanel 并查找/搜索 Multi PHP Manager。选择您的域名或子域名(无论您正在使用哪个),从下拉列表中选择 PHP 8.1 并应用。

enter image description here

现在找/搜索 PHP Selector,并选择当前的 PHP 版本为 8.1。

enter image description here

在同一个窗口中,转到“扩展”并启用“pdo_mysql”。

enter image description here

你已经准备好了。


这里最好的答案 - Gabriel Rogath

7
如果@eril answer不能帮助您禁用旧的PHP版本
sudo a2dismod php8.0
sudo a2enmod php8.1
sudo systemctl restart apache2

使用composer -vvv about命令检查Composer是否使用正确的PHP版本。

composer -vvv about 2>&1 | grep "PHP"

如果 composer about 已经显示了正确的 PHP 版本,则可以通过在 vendor/composer/platform_check.php 中添加 PHP_BINARY 来检查 composer 正在使用的实际 PHP 二进制路径,如下所示:
if (!(PHP_VERSION_ID >= 80100)) {
    $issues[] = 'You are running ' . PHP_VERSION . ' located at: ' . PHP_BINARY;
}

在我的情况下,启用了旧版本的php-fpm
a2disconf php8.0-fpm 
a2enconf php8.1-fpm 
sudo systemctl restart apache2

4

Composer检测到您的平台存在问题:您的Composer依赖项需要PHP版本“>= 8.1.0”。

我曾经面临过同样的问题。

只需进入Cpanel,然后选择PHP Selector,最后更改PHP版本即可。

enter image description here


3
Your Composer dependencies require a PHP version ">= 8.1.0"

我在将php从8.1降级到v7.4时遇到了同样的问题。我不知怎么搞错了php7.4-fpm模块。然而,当我再次尝试升级我的php v8.1时,composer开始抱怨那个错误。

我只是简单地删除了我的两个php版本,即7.4和8.1,并重新安装了8.1,这解决了我的问题。

要删除,请按照以下步骤进行....

sudo apt-get purge php8.*
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php8.1

最后,

sudo service apache2 restart 

2

在我的情况下一切都很好

  • composer.json 没有问题
  • 已安装 PHP 8.1
  • 我正在使用 nginx,我重启了 nginx,但发现我的配置是错误的,它看起来像这样
location ~ \.php$ {
    fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
}

所以正确的配置是

location ~ \.php$ {
    fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}

希望这能帮到某些人。

2
打开你的composer.json文件,并检查'require'块中关于'php'这一项的表达式。它可以对所有项目依赖项所允许的PHP版本或版本范围进行限制。
一个好的值应该像下面这样。更改后,请运行composer update。
    "require": {
        "php": "^8.0|^8.1",

与 Laravel 9 预装的 composer.json 不同:
    "require": {
        "php": "^8.0.2",

请参阅 Laravel 9 官方仓库中的 composer.json 文件:https://github.com/laravel/framework/blob/9.x/composer.json

0

如果您正在升级 Laravel 版本,并切换到需要 PHP8(8 或 9,记不清了)的版本, 并且您还切换了 PHP 版本, 则需要重新启动。

php artisan serve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接