Homestead:如何升级 PHP 版本

Homestead: How to upgrade PHP version

我一年前用 Laravel 5.5 安装了 Homestead。

现在我想升级到Laravel 5.6。

我按照 here

的说明升级了 Homestead
vagrant box update
git pull origin master

这迫使我也将 vagrant 升级到 2.1.2

现在当我使用

登录时

vagrant ssh

我无法升级到 Laravel 5.6,因为当我 运行 composer update 我收到这个警告:

Loading composer repositories with package information Updating dependencies (including require-dev) Your requirements could not be resolved to an installable set of packages.

Problem 1 - This package requires php >=7.1.3 but your PHP version (7.0.27; Package overridden via config.platform (actual: 7.1.7)) does not satisfy that requirement. Problem 2 - laravel/framework v5.6.9 requires php ^7.1.3 -> your PHP version (7.1.7-1+ubuntu16.04.1+deb.sury.org+1) overridden by "config.platform.php" version (7.0.27) does not satisfy that requirement.

如果我在 vagrant 机器中调用 php -v 我得到

PHP 7.1.7-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Jul 7 2017 09:41:45) ( NTS )

这没问题,因为 Laravel 只需要 PHP 7.1.3,但升级卡住了,因为 composer 声称我正在使用 PHP 7.0.27

为什么会这样,我该如何解决?

我什至试过了

sudo apt-get update
sudo apt-get upgrade

按照建议 here 但它仍然不起作用。升级时保留了一些软件包:

The following packages have been kept back: libdrm-amdgpu1 libdrm2 libegl1-mesa libgbm1 libgd3 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libwayland-egl1-mesa mssql-tools open-vm-tools php7.1-bcmath php7.1-cli php7.1-common php7.1-curl php7.1-dev php7.1-fpm php7.1-gd php7.1-imap php7.1-intl php7.1-json php7.1-mbstring php7.1-mysql php7.1-opcache php7.1-pgsql php7.1-readline php7.1-soap php7.1-sqlite3 php7.1-xml php7.1-zip 0 upgraded, 0 newly installed, 0 to remove and 30 not upgraded.

解决方案实际上是您问题的一部分。如果我们再看一下作曲家错误:

Problem 1 - This package requires php >=7.1.3 but your PHP version (7.0.27; Package overridden via config.platform [...]

这意味着您的 composer.json 中确实有类似以下内容的内容,您需要在更新之前更改或删除这些内容:

"config": {
    "platform": {
        "php": "7.0.7"
    },
    "preferred-install": "dist",
    "optimize-autoloader": true
}

您可以将其更改为实际平台版本或将其完全删除。它用于模拟一个环境,如果你想检查你是否可以在你的服务器上使用 运行 composer install,当它有另一个 PHP 版本而不是你的开发机器时,它会很方便。