如何判断安装了哪个 PHP 7 版本,以及如何将其更新到最新版本?

如何判断安装了哪个 PHP 7 版本,以及如何将其更新到最新版本?

我在 Ubuntu 上使用 Vagrant box(实际上是 Homestead)。当我使用 PHP 5.6 box 进行

php -v

我越来越:

PHP 5.6.13-1+deb.sury.org~trusty+3 (cli)

所以很明显这是 PHP 5.6.13。

但是当我使用 PHP 7 运行 box 时,我得到了:

PHP 7.0.0-2+deb.sury.org~trusty+1 (cli) ( NTS )

我真的不确定它是 PHP 7.0 还是 PHP 7.0.2(我不明白-2这里的 PHP 版本是什么)。

Ubuntu 14.04.3 LTS (GNU/Linux 3.19.0-25-generic x86_64)在这个盒子里奔跑

当我跑步时:

dpkg --get-selections | grep php

我越来越:

php-common                                      install
php-curl                                        install
php-gd                                          install
php-imap                                        install
php-mysql                                       install
php-pgsql                                       install
php-sqlite3                                     install
php7.0-cli                                      install
php7.0-common                                   install
php7.0-curl                                     install
php7.0-dev                                      install
php7.0-fpm                                      install
php7.0-gd                                       install
php7.0-imap                                     install
php7.0-json                                     install
php7.0-mysql                                    install
php7.0-opcache                                  install
php7.0-pgsql                                    install
php7.0-sqlite3                                  install

当我跑步时:

sudo apt-get upgrade php-common

我现在得到的信息是:

php-common is already the newest version.
php-common set to manually installed.

所以问题是 - 如果是 PHP 7.0 而不是 7.0.2,我该如何轻松更新到最新的 7.0.2,或者它是否尚未作为 Ubuntu 的软件包提供?

编辑

根据建议我已经运行:

sudo apt-get update

sudo apt-get upgrade

有关于安装 PHP 7.0.2 的信息,但是当我运行时php -v仍然收到:

PHP 7.0.0-2+deb.sury.org~trusty+1 (cli)

现在当我跑步的时候

 sudo apt-get upgrade

我越来越:

vagrant@homestead:~$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  libssl-dev nfs-common openssl php7.0-cli php7.0-dev php7.0-fpm
0 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.

当我跑步时:

apt-cache policy php7.0-cli

我越来越:

vagrant@homestead:~$ apt-cache policy php7.0-cli
php7.0-cli:
  Installed: 7.0.0-2+deb.sury.org~trusty+1
  Candidate: 7.0.2-4+deb.sury.org~trusty+1
  Version table:
     7.0.2-4+deb.sury.org~trusty+1 0
        500 http://ppa.launchpad.net/ondrej/php-7.0/ubuntu/ trusty/main amd64 Packages
 *** 7.0.0-2+deb.sury.org~trusty+1 0
        100 /var/lib/dpkg/status

答案1

第一部分,安装了什么。

这一切都回到了软件包版本控制方案,以及为什么你会感到困惑。所以,让我们把它分解成各个部分。假设它符合典型的 Debian 版本控制等,那么...

以 php7 为例:

PHP 7.0.0-2+deb.sury.org~trusty+1

该字符串解析如下:

  • PHP= 软件名称
  • 7.0.0= 该软件的版本(来自 PHP 自己的版本控制方案)
  • -2= 软件包修订号 - 即已进行了多少个不同的软件包更改 - 这将是“第二个软件包”,这意味着他们quilt在第二个版本中对软件包进行了更改或应用了补丁。
  • +deb.sury.org表示存储库源 - 它来自deb.sury.orgrepos,实际上是在 Launchpad 上运行的 PPA,其中包含由运行网站的人制作的软件包deb.sury.org
  • ~trusty+1- 这表示对存储库完成了特定于版本的其他更改 - 这是一个 Ubuntu Trusty 软件包,并且很可能是该软件包的第一个或第二个修订版(取决于是否曾经有过+0),特定于 Trusty。

总结:这是一个 PHP 7.0.0 包,但自最初的 PHP 7.0.0 包以来已经经历了几次修订。


第二部分,如何获取 PHP 7.0.2。

您正在使用的存储库是 PPA - 很可能这个

我被告知 7.0.2 可用,您需要运行apt-get update && apt-get upgrade。这应该会为您带来正确的版本。如果没有,请尝试使用,apt-get dist-upgrade因为可能需要添加其他依赖项,因此升级被阻止。

相关内容