Composer不能检测到php7,而是使用5.6版本。我该如何设置CLI以使用php7?

4

当我执行 php -v 命令时,它显示了安装了 php7。

enter image description here

但是当我尝试执行 composer update 命令时,出现以下响应:

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - This package requires php >=7.0.0 but your PHP version (5.6.33) does not satisfy that requirement.

我该如何修复这个问题? 注意:我不被允许卸载之前的php版本。
以下是composer.json文件:
{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=7.0.0",
        "fideloper/proxy": "~3.3",
        "intervention/image": "^2.4",
        "laravel/framework": "5.5.*",
        "laravel/passport": "^v1",
        "laravel/tinker": "~1.0"
    },
    "require-dev": {
        "filp/whoops": "~2.0",
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~6.0"
    },
    "autoload": {
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\\": "app/"
        },
        "files": [
            "app/Helpers/misc.php"
        ]
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "extra": {
        "laravel": {
            "dont-discover": [
            ]
        }
    },
    "scripts": {
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate"
        ],
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover"
        ]
    },
    "config": {
        "preferred-install": "dist",
        "sort-packages": true,
        "optimize-autoloader": true
    }
}

我已经尝试过了

composer update --ignore-platform-reqs

但我仍然遇到了另一个错误,这个错误与上述问题有关。


2
请展示 composer.json 文件。 - Sohel0415
删除环境变量中之前的PHP路径,并添加PHP7路径,同时停止使用PHP5.6的XAMPP或WAMP服务器。 - Muhammad Sadiq
尝试删除你的 composer.lock 文件,然后再次运行 composer update - Sapnesh Naik
@MuhammadSadiq:我不被允许删除之前的PHP版本。 - lonestar
@SapneshNaik:我试过了,结果一样。 - lonestar
2
删除 PHP 版本 5.6.33 的环境变量,并提供您最新的 PHP 版本路径,例如 C:\wamp64\bin\php\php7.1.9 - Shubham Pokhriyal
6个回答

5

正如问题中所述,您的系统已经安装了PHP的两个版本。由于Laravel使用cli版本,您需要启用7.X并禁用5.X。

您可以通过以下命令实现

$ sudo a2dismod php5.6 // disable the loaded version
$ sudo a2enmod php7.0 // enable the desired version
$ sudo service apache2 restart // restart apache to get it in action

更多信息

您可以使用以下命令安装不同版本的PHP

对于Apache

$ sudo apt install php5.6   [PHP 5.6]
$ sudo apt install php7.0   [PHP 7.0]
$ sudo apt install php7.1   [PHP 7.1]

For Ngix

$ sudo apt install php5.6-fpm   [PHP 5.6]
$ sudo apt install php7.0-fpm   [PHP 7.0]
$ sudo apt install php7.1-fpm   [PHP 7.1]

为了安装任何PHP模块,只需指定PHP版本并使用自动补全功能查看所有模块,格式如下。
------------ press Tab key for auto-completion ------------ 
$ sudo apt install php5.6 
$ sudo apt install php7.0 
$ sudo apt install php7.1 

现在,您可以根据自己的需求安装大多数必需的PHP模块。
------------ Install PHP Modules ------------
$ sudo apt install php5.6-cli php5.6-xml php5.6-mysql 
$ sudo apt install php7.0-cli php7.0-xml php7.0-mysql 
$ sudo apt install php7.1-cli php7.1-xml php7.1-mysql 

2

我曾经遇到同样的问题,通过更改系统变量下的路径来解决它。

  • 右键单击我的电脑并点击属性
  • 在左侧菜单上点击高级系统设置
  • 确保选择了高级选项卡菜单
  • 点击环境变量(右下角)
  • 在系统变量面板下点击路径
  • 点击编辑
  • 找到PHP安装路径(例如C:\wamp64\bin\php\php5.x.x)
  • 点击编辑并将其重命名为所需的PHP版本(例如C:\wamp64\bin\php\php7.3.5)
  • 点击确定以保存

1
如果您想使用不同的PHP版本运行composer,请尝试使用php $(which composer) update来调用它。现在您可以自由地更改PHP cli的路径。

0

检查您的composer可执行文件所在位置(使用which命令),并检查第一行(shebang)。我猜这仍然指向旧的php版本。


0

通过这个命令 sudo apt install php7.1 php7.1-fpm 进行安装,然后重新检查并发布结果。


0

我使用 phpbrew 来管理多个 PHP 版本。在我的情况下,这个命令可以解决 composer 使用错误的 PHP 版本的问题:

phpbrew app get composer

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