如何在 Ubuntu 16.04 上从 PHP 7 降级到 PHP 5.6?

dib*_*ibs 180 php apache2 downgrade 16.04

我正在尝试将我的 PHP 版本从 7 恢复到 5.6,虽然我删除了 PHP 7 然后安装了 PHP 5.6,但我似乎仍在运行版本 7。

是否有一种简单的方法可以在适当配置 apache、phpMyAdmin 和 co 的 PHP 版本中移动?

一种简单的方法来即时更改 PHP 的当前版本,甚至可以逐个站点更改。

Pos*_*aga 338


今天更新,尽管我禁用了php7.0apache 模块,但我再次遇到了运行 PHP 7 的问题:phpinfo正在使用 fastCGI 显示 php 7
......因此,如果在按照以下说明进行操作后遇到这种情况,则可能需要禁用proxy_fcgiapache 模块:

sudo a2dismod proxy_fcgi proxy; sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

1. 重新安装 PHP 5.6

对我有用的是本指南:http : //www.lornajane.net/posts/2016/php-7-0-and-5-6-on-ubuntu

其实不需要删除php7.0,你可以一起安装php5.6(也是因为你phpmyadmin需要php7.0的包会有依赖问题)

假设libapache2-mod-php有一种适合您在 Apache 中启用 PHP 的方法,您可以按以下方式进行:

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php7.0 php5.6 php5.6-mysql php-gettext php5.6-mbstring php-mbstring php7.0-mbstring php-xdebug libapache2-mod-php5.6 libapache2-mod-php7.0
Run Code Online (Sandbox Code Playgroud)

2. 切换 PHP 版本

  • 这篇文章拯救了我的一天。 (7认同)
  • 你是对的,谢谢,我已经修复了命令:) (2认同)
  • @Postadelmaga 它可以更改 Web 应用程序的 PHP 版本。非常感谢!但是 CLI 仍然运行 PHP7。您知道如何将其切换到 PHP5.6 吗? (2认同)

小智 51

Ubuntu 16.04 带有php 7.0,并且某些php应用程序可能仍然会失败并显示php 7.0。因此,在某些情况下,同时使用php 7.0和可能是明智的php 5.x,这样您就可以随时选择使用哪个版本来满足您的需要。

你可以这样做:

xavi@computer# sudo su
root@computer# add-apt-repository ppa:ondrej/php
root@computer# apt-get update
root@computer# apt-get install php7.0 php5.6 php5.6-mysql php-gettext php5.6-mbstring php-xdebug libapache2-mod-php5.6 libapache2-mod-php7.0 php5.6-curl php5.6-gd php5.6-mcrypt php5.6-xml php5.6-xmlrpc
Run Code Online (Sandbox Code Playgroud)

php5.6 & php7.0在我的情况下,安装两者都很干净:没有抱怨问题等。

要从 切换php 5.6php 7.0您需要做两件事:

# For php in web apps
sudo a2dismod php5.6 && sudo a2enmod php7.0 && sudo service apache2 restart
# For php-cli in the command line
sudo ln -sfn /usr/bin/php7.0 /etc/alternatives/php
Run Code Online (Sandbox Code Playgroud)

或者从 php7.0 到 php5.6:

# For php in web apps
sudo a2dismod php7.0 && sudo a2enmod php5.6 && sudo service apache2 restart
# For php-cli in the command line
sudo ln -sfn /usr/bin/php5.6 /etc/alternatives/php
Run Code Online (Sandbox Code Playgroud)

您还可以通过运行 php -v 快速检查您使用的是哪个。


oer*_*dnj 12

你的问题缺乏重要的细节,所以我会更广泛地回答。

假设您正在使用包,有一些重要的细节:

  1. Apache2 可以配置为使用apache2SAPI 使用libapache2-mod-php7.0包或 FPM SAPI 使用php7.0-fpmwith mod_proxy_fcgi

  2. Ubuntu 16.04 的存储库中只有 PHP 7.0,您可以使用ppa:ondrej/php类似的命名方案(例如libapache2-mod-php5.6php5.6-fpm)来添加对 PHP 5.6 的支持。

  3. 如果您使用的是 Apache2 SAPI ( libapache2-mod-php*),则需要在安装后libapache2-mod-php5.6通过运行禁用 PHP 7.0,a2dismod php7.0并通过运行启用 PHP 5.6 a2enmod php5.6

  4. 如果您使用的是 FPM SAPI( php*-fpm),那么您需要将 FPM unix socket 从 更改/run/php/php7.0-fpm.sock/run/php/php5.6-fpm.sock

  5. 请记住,对于与 PHP 捆绑的模块(如 MySQL),命名约定是phpX.Y-<ext>(fephp7.0-mysqlphp5.6-mysql),但对于外部 PECL 模块(fe APCu、mongodb、...),它只是php-<ext>(fe php-apcu, php-mongodb)。我建议apt-cache search php <ext>在您的系统上运行以搜索正确的包名称,然后再在 Internet 上提问。

  • 您能否详细说明如何更改 FPM unix 套接字? (2认同)

Thu*_*ird 6

我认为你应该删除你的 php 包并安装 php5.6。您可以按照以下步骤进行:

sudo apt-get purge php7.*
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php5.6
Run Code Online (Sandbox Code Playgroud)

然后,您可以检查 php 的版本以确保。如下图所示:

php -v
Run Code Online (Sandbox Code Playgroud)

  • 你不需要做 grep-awk 魔法,因为所有打包都依赖于 `php5-common`,所以很简单:`apt-get purge php5-common` 将从你的系统中清除所有 php5 包。 (3认同)