在Ubuntu 16.04中,将php 7.0升级到特定的php 7.1/7.2版本。

如何在Ubuntu 16.04上从php 7.0升级到php 7.1?
如果我运行php -v命令,会得到以下信息:
PHP 7.0.8-0ubuntu0.16.04.3 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.8-0ubuntu0.16.04.3, Copyright (c) 1999-2016, by Zend Technologies

你们为什么认为Ubuntu不升级PHP到较新的次要版本?7.0.8已经在几个月前被取代了。 - The Onin
1因为即使是较小的PHP版本也会破坏兼容性。请参阅PHP 7.1与PHP 7中的hash_function。 - Olavi Sau
1个回答

在Ubuntu 16.04的软件仓库中没有官方的PHP 7.1版本。

如果你想要PHP 7.1,可以在ppa:ondrej/php中找到一个可用的版本。

你可以按照以下步骤进行安装:

  1. sudo add-apt-repository ppa:ondrej/php
  2. sudo apt-get update
  3. (可选) sudo apt-get remove php7.0
  4. sudo apt-get install php7.1 (来自评论)

请记住,这不是官方的升级路径。这个PPA是众所周知的,并且相对安全。

这个PPA提供了可共存的软件包(你可以从该PPA安装多个版本的PHP)。 ~muru


2谢谢你,@ThatGuy,你说得对,但是我需要条件返回类型“?”而且迫不及待想要使用它们 :) - Michele Carino
没问题。这应该能让你开始运行起来 :) - AnotherKiwiGuy
1我还需要执行以下命令:4. sudo apt-get install php7.1 - Michele Carino
好的,已更新答案以添加您的步骤 :) - AnotherKiwiGuy
可能需要这样做:首先执行 sudo apt-get remove php7.0,然后执行 sudo apt-get install php7.1。我想可能还需要进一步测试一下 :) - AnotherKiwiGuy
2@ThatGuy PPA有可共存的软件包(您可以从该PPA安装多个版本的PHP)。 - muru
谢谢 @muru,这真的非常有帮助!我以前只安装一个,可能是我的强迫症作祟吧 ;) 我已经将你的备注添加到答案中了! - AnotherKiwiGuy
1@ThatGuy你可以将你的评论写成答案,只需添加php7.0的移除(如果需要的话),并且之后任何扩展都应重新安装到php 7.1上。 - Michele Carino
@Pherserk - 给你,作为一个可选步骤添加了 :) - AnotherKiwiGuy
1在我这里也适用于托管在EC2上的Ubuntu 16.04.01 LTS。 - The Onin
为什么要进行第三次升级?如果该 PPA 有适用于 7.0 版本的更新版本,那么它将被升级,但在几秒钟后移除它的意义是什么呢?系统升级是一件好事,但当只涉及升级 PHP 时,这样做就有些不合适了。 - redanimalwar
@redanimalwar - PPA 不会覆盖原有的 PHP。至少在回答写作时是这样的。 - AnotherKiwiGuy
好的,这更加证明了我的观点。 - redanimalwar
@红动物战 - 我绝对不反对保持这个答案的最新状态。谢谢你的编辑 :) - AnotherKiwiGuy
从这个ppa安装7.1不会提供任何自动升级路径吗?我需要手动安装更高版本吗? - mos fetish
两个问题。1. 只要您继续使用PAPA,它将正常升级。2. 作为生产服务器的一部分,您应该手动测试和安装版本,但如果运行apt-get upgrade,它将作为例行程序进行升级。 - AnotherKiwiGuy
1如果您最初是从这个PPA获取了PHP 7.0,那么要将其删除,您需要运行sudo apt-get remove php7.0*,而不仅仅是像上面第3点中所示的sudo apt-get remove php7.0 - Luke Cousins
@LukeCousins - 是的,但根据原帖的问题,那不是正确的答案。 - AnotherKiwiGuy
1这对我没用,我得到了以下错误信息: E: 无法找到软件包 php7.1 E: 无法通过 glob 'php7.1' 找到任何软件包 E: 无法通过 regex 'php7.1' 找到任何软件包 - Victor Anuebunwa
@avonnadozie 重复步骤1和2。看起来PPA还没有安装或刷新。 - AnotherKiwiGuy
请按照此指南进行更详细的操作:https://ayesh.me/Ubuntu-PHP-7.1 - Raza
无法找到包php7.1 - Damjan Pavlica
@DamjanPavlica - 那么看起来PPA没有被添加到apt源中。您可能需要再次运行sudo add-apt-repository ppa:ondrej/phpsudo apt-get update - AnotherKiwiGuy
@ThatGuy 没有啊 :( - Damjan Pavlica
@DamjanPavlica - 好的,这超出了此问题的范围。最好提一个新问题,并参照这个问题。 - AnotherKiwiGuy
3只是要注意:此存储库也更新到 php 7.2 - josircg