【问题标题】:An "issue" after ppa:ondrej/php5 deprecationppa:ondrej/php5 弃用后的“问题”
【发布时间】:2016-09-08 21:57:37
【问题描述】:

今天我将我的 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-pearpkg-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-pearpkg-php-tools 包,但是如果我尝试安装它们,所有这些 php7.0 包也必须安装。

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

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

【问题讨论】:

  • 最有可能/usr/bin/php指向php7.0-cli
  • 在我的 debian 服务器上 /usr/bin/php 指向 /etc/alternatives/php 指向 /usr/bin/php7.0 (是的,我同时运行 PHP 5.6 和 7.0)。服务器上的符号链接可能相同。
  • 我使用 Ubuntu,/etc/alternatives/php 指向 /usr/bin/php5
  • 表示更新了cli-version,但是php-fpm的版本没有改变。 cli 和 fpm - 包有不同的可执行文件。它们不会同时运行,只是两个不同的包。
  • 是的,没错,我认为是这样,但是: 1. 这怎么可能? 2. 为什么 phpinfo 文件和 ssh 命令显示不同的输出? 3. 为什么还有一个/etc/php/7.0 文件夹,里面有模块? 4. php-pearpkg-php-tools 包对于 LEMP+Wordress 堆栈是必不可少的吗?

标签: php wordpress nginx ssh


【解决方案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 CLI 二进制文件基本上是无害的,除非您需要使用命令行在本地运行 PHP 脚本。我可以推荐两种方法:

  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 手动配置版本

迁移指南的更详尽版本位于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)。

【讨论】:

  • 谢谢。但是,我在this tutorial on askubuntu 之后完全删除了 PHP,并且我安装了新的 PHP 7.0。无论如何,我必须尽快升级,所以我去了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
  • 2017-05-27
  • 2012-06-13
  • 1970-01-01
相关资源
最近更新 更多