Composer 使用错误的 php 版本,但 php -v 显示正确的版本(Ubuntu)

问题描述 投票:0回答:9

我正在尝试安装我的作曲家软件包,但它给了我这个:

This package requires php >=7.0.0 but your PHP version (5.5.9)

但是

php -v
给了我这个:
PHP 7.0.22-0ubuntu0.16.04.1 (cli) ( NTS )

我正在运行 Ubuntu 16.04.3 LTS 机器,我找到了一些适用于 Mac 和 Windows 的灵魂,但似乎没有人在 Linux 上遇到这个问题?

php ubuntu composer-php
9个回答
25
投票

试试这个:

composer install --ignore-platform-reqs

或者composer.json中的这个

"config": {
    "preferred-install": "dist",
    "platform": {
        "php": "7.0.0"
    }
}

在第二个解决方案中,基本上你是在伪造一个平台,然后在这之后运行

composer.phar update


8
投票

如果您使用基于 Debian 的系统,您可以使用以下命令要求其全局使用特定版本(取决于您的 php 版本的安装方式和位置):

sudo update-alternatives --set php /usr/bin/php7.2

update-alternatives 创建、删除、维护和显示 有关构成 Debian 的符号链接的信息 替代系统。


4
投票

试试这个,它对我有用:

  alias php='/usr/local/php7/bin/php'

php composer.phar install

3
投票

composer
在这里引用 PHP 可执行文件,如下所示:

#!/usr/bin/env php

当我这样做时

which php
我在 GIT-Bash (Windows 10) 下得到
/c/Program Files/php-7.1/php

在 Linux 下(我家里有 Debian),

php
可能是指向实际 PHP 二进制文件的符号链接。

因此请执行以下操作:

  • php
     仔细检查上述 
    ls -l `which php`
  • 确保您只安装了一个 PHP 版本,这可能会导致混合不兼容的版本,这可能是问题的根本原因

这应该可以帮助您找到根本原因。


1
投票

嗯,这对我有用

$ alias composer="php /usr/bin/composer.phar"
$ composer install

例如,在别名中使用确切的 php 二进制文件

$ alias composer="php8.1 /usr/bin/composer.phar"

0
投票

只是在这里分享,因为我遇到了同样的问题,并在搜索时首先发现了这个线程。 对我来说,我有一个带有 PHP 5.6 的 Windows 服务器。以及 PHP 7.2。?在上面。我已将 IIS 配置为使用 7.2,但 5.6 仍在路径下的环境变量中。打开系统属性>高级选项卡>“环境变量...”。编辑“path”,并从路径中删除对“C:/program files (x86)/PHP/v5.6”的引用并保存。 重新启动你的终端,你就应该被设置了。希望对某人有帮助。


0
投票

我最近遇到了同样的问题。

php --version
返回了
7.4.30
,但是Composer说它使用的是PHP 8.0.18。

事实证明 Composer 使用的是自己的 PHP 版本。

composer
脚本包含 PHP 8 的硬编码路径。(对我来说,这是一个 Composer 错误,因为 Composer 应该尊重
config.platform.php
文件的
composer.json
属性的值。)

  1. 一个选项可能是alias

    composer

    alias composer='/usr/local/bin/php /usr/bin/composer.phar
    
  2. 另一种选择可能是重写

    composer

    cat /usr/bin/composer \
        | sed 's~/usr/bin/php8~/usr/local/bin/php~g' \
        > /usr/bin/composer.tmp
    mv /usr/bin/composer.tmp /usr/bin/composer
    

我就是这样发现的。首先,我想找到

composer
的位置。通过使用
whereis composer
,可以找到
composer
命令的路径。对我来说,它回来了

composer: /usr/bin/composer

然后我想查看

/usr/bin/composer
的内容,这样我就可以了解
composer
命令在幕后做了什么。通过使用
cat /usr/bin/composer
,可以打印
composer
脚本的内容。对我来说,它回来了

#!/bin/sh

/usr/bin/php8 /usr/bin/composer.phar "$@"

就是这样。

composer
命令使用硬编码
/usr/bin/php8
来执行
composer.phar
文件。


0
投票

以上均不适用于 centos 7。 执行此命令后,composer php 版本已修复 正确答案如下

SSH 命令:

scl enable ea-php74 'composer diagnose'

0
投票
/opt/cpanel/ea-php81/root/usr/bin/php /opt/cpanel/composer/bin/composer install

以上命令解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.