14.04从ppa:ondrej / php5-5.6干净地升级到ppa:ondrej / php

我今天经历了通常的服务器软件包升级,发现ppa:ondrej/php5-5.6已被折旧,我们现在必须升级到ppa:ondrej/php

基本提供的说明是运行:

 sudo add-apt-repository ppa:ondrej/php 

然后:

 sudo apt-get update sudo apt-get upgrade --show-upgraded 

看看新的存储库,名称似乎没有完全排列,所以我想我需要做一些apt-get安装来安装所有正确的软件包。 它似乎也将安装所有PHP版本的子包(即php-gd),也可能安装php 5.5和php 7.0( https://stackoverflow.com/questions/37197539/an-issue-after-ppaondrej- php5-deprecation )

所以我的问题是,考虑到这是一个生产服务器,“切换”ppas和清理现有软件包的最简洁方法是什么? 我是否应该尝试删除先前PPA中安装的所有软件包和/或从我的系统中删除PPA?

它还没有出现在PPA的主页面中,但升级消息在2016年6月被弃用,所以重建我们的服务器映像不是一个很长的时间表。

我找到了这个页面,它提供了关于切换出apache使用的PHP版本的说明: https : //dzone.com/articles/php-70-and-56-on-ubuntu

旧的php5-*软件包可与新的phpX.Y-*方案共同安装,因此您需要做的第一件事就是安装并启用新软件包:

Apache 2.4

您需要安装新的libapache2-mod-phpX.Y软件包,然后禁用旧的php5,并为PHP 5.6启用新的版本化模块,fe:

 sudo apt-get install libapache2-mod-php5.6 sudo a2dismod php5 sudo a2enmod php5.6 

NGINX / Apache 2.4与PHP-FPM

这更简单,只需安装phpX.Y-fpm并将web服务器配置中的套接字路径更改为/run/php/phpX.Y-fpm.sock并复制旧配置,PHP for PHP 5.6:

 sudo apt-get install php5.6-fpm # now change the socket path in your nginx/apache2 configuration # and restart the server 

如果已定义更多FPM池,则需要将旧配置复制到新路径,同样适用于PHP 5.6:

 # keep the new www.conf sudo mv /etc/php/5.6/fpm/pool.d/www.conf /etc/php/5.6/fpm/pool.d/www-5.6.conf # copy the old configuration to the new path sudo cp /etc/php5/fpm/pool.d/* /etc/php/5.6/fpm/pool.d/ sudo update-rc.d php5-fpm disable # or uninstall php5-fpm package # restart PHP 5.6 FPM to read the new configuration sudo service php5.6-fpm restart 

现在,如果你想删除旧的软件包,你可能会遇到一些问题,因为可能有需要旧的php5 *名称的软件包,你可能想要添加ppa:ondrej/php5-compat ,提供映射php5-薄层兼容包php5-主要php5 *包的php5-php5.6-

 sudo add-apt-repository ppa:ondrej/php5-compat sudo apt-get update sudo apt-get dist-upgrade 

绝对在非生产环境中首先尝试这个! 好的一面是,这使得/etc/php5的旧配置保持不变,因此您可以迁移旧设置。

在更新主PHP包之后,您可能想要查找其余的php5-*包并安装它们的等价物,例如

 apt-get install php-apcu # for php5-apcu apt-get install php-memcached # for php5-memcached 

我将准备一个php5-compat repo的更新,它会自动生成这个映射。

可以在DEB.SURY.ORG PPA Wikis中找到更新的文本。