ppa之后的“问题”:ondrej / php5弃用

时间:2016-05-12 21:16:53

标签: php wordpress nginx ssh

今天我将LEMP堆栈上的PHP 5.5升级到版本5.5.35。升级后,我收到一条屏幕消息,表示repo ppa:ondrej / php5 已被弃用,如果我想继续接收php更新,我应该转到 ppa:ondrej / php 现在包括one place中的PHP 5.5,PHP 5.6和PHP 7.0。以前这些版本都在不同的回购中。

我按照Ondřej的建议行事:

sudo add-apt-repository ppa:ondrej/php

然后:

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

一切顺利,只有两个软件包被阻止: php-pear pkg-php-tools 。当然,当程序包依赖关系发生变化时,我会运行:

sudo apt-get install php-pear pkg-php-tools

然后,我收到一条消息,说明将安装以下软件包:

php-cli php-common php-xml php7.0-cli php7.0-common php7.0-json php7.0-opcache php7.0-readline php7.0-xml

我立刻感到有些不对劲。当我运行PHP 5.5时为什么我需要PHP 7.0包?但是我选择了YES,显然一切都很顺利。服务器正在运行,没有我所知道的错误或混乱。然后我很好奇,我检查了我正在运行的PHP版本?

php -v

输出结果为:

PHP 7.0.6-1+donate.sury.org~trusty...

这到底发生了什么?我是如何最终安装PHP 7.0以及为什么服务器/站点没有崩溃?由于我使用nginx和php-fpm,通过检查nginx.conf我可以清楚地看到nginx指向php5-fpm.sock所以我肯定在这里运行php5-fpm。此外,该站点已启动,并且日志中没有PHP错误。

我也去了,我上传了一个 phpinfo 文件。该文件显示我使用的是PHP 5.5.35。所以有两条冲突消息,其中命令通过ssh显示PHP版本是7.0.6,而phpinfo文件显示服务器使用PHP 5.5.35。

所以我跑:

sudo apt-get remove php7.0-common

以前添加的所有php7.0软件包都被删除了,还有那两个最初被阻止的软件包。

现在,在通过SSH检查PHP版本后,它正确显示5.5.35。虽然发生了这一切,但服务器并没有遇到任何麻烦。此时的状态是我没有 php-pear pkg-php-tools 包,但如果我尝试安装所有这些php7.0包也必须安装。

我还检查了 / etc / php5 / etc / php 文件夹。在第二个文件夹中有 7.0 文件夹,其中 cli mods-available 文件夹中包含mods。

有人可以向我解释这里发生了什么,我该怎么办? php5和php7.0是否同时在服务器上运行?我是否需要在LEMP + Wordpress堆栈中保留的那两个包?

1 个答案:

答案 0 :(得分:1)

php-pearpkg-php-tools必须依赖于PHP CLI才能获得默认的PHP版本和PHP 7.0。安装php-cli会提取php7.0-cli将安装/usr/bin/php7.0并将其注册为具有最高(70)优先级的替代方案,以提供/usr/bin/php

除非您需要使用命令行在本地运行PHP脚本,否则安装PHP CLI二进制文件几乎无害。我可以推荐两种方法:

  1. 重写这些脚本以指定所需的版本,例如将php <script>更改为php5.6 <script>
  2. 使用update-alternatives/usr/bin/php切换为所需的PHP版本:a)切换到特定版本update-alternatives --set php /usr/bin/php5.6或b)update-alternatives --config php手动配置版本
  3. 迁移指南的更完整版本位于DEB.SURY.ORG Wiki

    要使用新的PHP FPM软件包,您需要安装:

    sudo apt-get install php5.5-fpm # for PHP 5.5
    sudo apt-get install php5.6-fpm # for PHP 5.6
    sudo apt-get install php7.0-fpm # for PHP 7.0
    

    并相应地调整套接字,查看默认的FPM配置:

    sudo editor /etc/php/X.Y/fpm/pool.d/www.conf
    

    表示套接字位置(默认为/run/php/phpX.Y-fpm.sock)。