今天我进行了常规服务器包升级,发现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-gd)似乎将安装所有 php 版本,并且还可能安装 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
答案1
旧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 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* 名称,您可能需要添加提供映射到主 php5* 软件包ppa:ondrej/php5-compat
的薄层兼容性软件包:php5-<foo>
php5.6-<foo>
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 维基。