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 版本而不是你的开发机器时,它会很方便。
我一年前用 Laravel 5.5 安装了 Homestead。
现在我想升级到Laravel 5.6。
我按照 here 和
的说明升级了 Homesteadvagrant 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 版本而不是你的开发机器时,它会很方便。