如何在仍然受支持的Ubuntu版本中安装不同(升级或降级)的PHP版本?

我正在尝试在Ubuntu 12.04/14.04/16.04 LTS上安装PHP 5.5、5.6或7.0,并且我只能获得Ubuntu 12.04的PHP 5.3.10,Ubuntu 14.04的PHP 5.5.9或Ubuntu 16.04的PHP 7.0.4(使用apt-get命令从官方软件源安装)。
我不太确定如何进行手动更新,因为我需要:
- 尝试新的PHP功能 - 安装旧版本的PHP以支持某些软件。

1如果sudo apt-get upgrade不升级PHP,那么尝试sudo apt-get dist-upgrade进行发行版升级。 - Moiz Kiyani
2个回答

你可以使用PPA来保持PHP的最新状态,或者安装之前的版本(例如,在Ubuntu 16.04 LTS上安装PHP 5.6)。
目前最常用的存储库来自于Debian PHP维护者Ondřej Surý:
  • ppa:ondrej/php Launchpad logo (适用于PHP 5.6/7.0/7.1的共存版本,不再支持PHP 5.5)
php5兼容包: 点击这里获取有关使用PPA的说明。

以前的PHP PPAs中包含了Apache 2.4的更新。现在不再是这样,您需要添加单独的Apache 2.4存储库:

如果您想使用这些PPAs,请按照以下步骤进行:

ppa:ondrej/php Launchpad logo(适用于PHP 5.6/7.0/7.1)

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install php7.1   # for PHP 7.1
sudo apt-get install php7.0   # for PHP 7.0
sudo apt-get install php5.6   # for PHP 5.6

切换已安装的版本,请使用。
sudo update-alternatives --config php

然后,您必须将Apache设置为与正确的版本配合使用:
sudo a2dismod php7.1         # unload the current version
sudo a2enmod  php5.6         # load the version you need
sudo service apache2 restart # restart webserver to apply

ppa:ondrej/php5-compat Launchpad logo(用于php5兼容)

sudo add-apt-repository ppa:ondrej/php
sudo add-apt-repository ppa:ondrej/php5-compat
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install php5 # this will pull php5.6 package 

如果你没有add-apt-repository二进制文件,请按照以下步骤操作:
sudo apt-get install python-software-properties

注意事项:

PHP 5.4

最新的PHP 5.4预打包现已存放在单独的PPA中: ppa:ondrej/php5-oldstable Launchpad logo

请注意,PHP 5.4已于2015年9月3日结束生命周期,并且不再接收任何安全更新。建议迁移到至少支持安全更新至2018年12月31日的PHP 5.6。


安装这个PPA大部分都能正常工作,但是依赖于phpapi-20090626+lfs的软件包(例如php-apc)将无法安装,因为这个PPA没有包含该特定虚拟软件包。我猜测新的PHP版本有一个新的phpapi虚拟软件包,但如果是这样的话,它并没有被包含在内。 - Ian
我运行了 sudo add-apt-repository ppa:ondrej/php5 命令 - 但当我运行 apt-get chanelog php5 命令时,它告诉我仍然是版本 5.3.6。我需要在 apt-get 中指定 PPA 吗? - kavisiegel
5原来你得先运行 sudo apt-get update - kavisiegel
我只是要求安装php5,但我得到了php 5.4.0,同时也安装了apache 2.2。我并没有要求安装apache。我只想要php 5.4.0的命令行界面。 - Mark Tomlin
3有一个叫做php5-cli的软件包可以满足你的需求! - matteosister
嗯...我希望我能在命令行界面上完成所有操作...这可行吗? - Felipe
11添加ppa后,您可以执行以下操作: sudo apt-get dist-upgrade - matteosister
2安装ppa后,升级php并运行php -v命令后,版本信息以以下错误消息开头:_Failed loading /usr/lib/php5/20090626/xdebug.so: /usr/lib/php5/20090626/xdebug.so: cannot open shared object file: No such file or directory_。真是让人烦恼。 - Geoffrey
2这是正常的。Php 5.4使用了zend库的新版本。当你升级到5.4时,xdebug扩展会重新编译。你需要在/usr/lib/php5目录下检查文件夹的名称。我的是20100525,你的也应该是这样的,并且检查是否有一个xdebug.so文件。现在编辑/etc/php5/mods-available/xdebug.ini(或符号链接的/etc/php5/conf.d/**-xdebug.ini)文件,并设置正确的路径到xdebug.so文件。 - matteosister
我的PPA中有xdebug软件包和php5 5.4,所以你只需要从PPA安装它即可。 - oerdnj
提前警告一下——存储库将在5.5发布后立即更新... - oerdnj
2如果Ubuntu告诉您软件包已经“被保留”,请运行apt-get dist-upgrade - Ashley Strout
运行 php -a 启动的是『交互模式』,而不是『交互式终端』。 我可以使用『交互式终端』吗? - Md Enzam Hossain
这个PPA现在提供了5.5版本,其中包含对Apache 2.4的升级,可能会破坏一些安装。更多详细信息请参考:http://www.justincarmony.com/blog/2013/07/31/ubuntu-12-04-php-5-4-apache2-and-ppaondrejphp5/ - markdwhite
这个PPA缺少安装Virtualmin所需的正确软件包。libapache2-mod-fcgid: 依赖于apache2.2-common,但是它将不会被安装。libapache2-mod-ruby: 依赖于apache2.2-common,但是它将不会被安装。libapache2-svn: 依赖于apache2.2-common,但是它将不会被安装。 - user235464
嗯,我用了这个方法,到目前为止它成功地帮我安装了PHP5.5和Apache 2.4。我的Apache确实出了问题。真的很费劲地试图弄清楚Apache到底出了什么问题。就好像它不再支持php一样,但是php模块已经启用了。真是让人摸不着头脑! - James T Snell
弄明白了:当安装了Apache 2.4后,我之前的站点配置就不再起作用了。原来他们在Apache中添加了一些新的安全设置。我不得不在我的虚拟主机的目录部分添加了"Require all granted"(感谢:http://stackoverflow.com/questions/10351167/apache-client-denied-by-server-configuration)。 - James T Snell
我按照指示做了一切,但还是得到了5.5分,而不是5.4分 :( - Eugene
3如果apt-get install python-software-properties命令无法提供add-apt-repository命令,请使用apt-get install software-properties-common - Meetai.com
1截至2016年12月12日,这已不再适用于PHP 5.5。根据此推文,存储库已删除对5.5软件包的支持。https://twitter.com/debsuryorg/status/808284372356825088在此之后,我该如何可靠地安装PHP 5.5.31? - Jerry Saravia
对于PHP 7来说,有许多扩展是不可用的,比如GD! - SaidbakR
PPA包在Ubuntu 18.04上支持PHP 5.6吗?当我尝试使用它时显示为禁止访问。 - Shanteshwar Inde

PHP 5.4的软件包进入Ubuntu需要一些时间,因为有很多依赖检查要做。Ubuntu 12.04现在处于测试版阶段,所以我怀疑他们会升级到PHP 5.4(尽管我没有官方或内部消息)--它可能要等到今年10月的Ubuntu 12.10才会出现。如果你想更早得到它,你要么找一个第三方软件包,要么学会从源代码构建。


  • 相关问题