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

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

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

有没有一种简单的方法可以移动 PHP 版本,其中 apache、phpMyAdmin 和 co 已适当配置?

有一种简单的方法可以即时甚至逐个站点地更改 PHP 的当前版本,这将会很棒。

答案1

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

sudo a2dismod proxy_fcgi proxy; sudo service apache2 restart

1.重新安装 PHP 5.6

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

实际上不需要删除php7.0,您可以一起安装 php5.6(因为您会遇到依赖phpmyadminphp7.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

2.切换PHP版本

  • 从php5.6到php7.0:

    • 阿帕奇:

      sudo a2dismod php5.6 ; sudo a2enmod php7.0 ; sudo service apache2 restart
      
    • 命令行:

      sudo update-alternatives --set php /usr/bin/php7.0
      
  • 从php7.0到php5.6:

    • 阿帕奇:

      sudo a2dismod php7.0 ; sudo a2enmod php5.6 ; sudo service apache2 restart
      
    • 命令行:

      sudo update-alternatives --set php /usr/bin/php5.6
      

答案2

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

就我而言,安装两者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

或者从 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

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

答案3

您的问题缺少重要细节,因此我将更广泛地回答。

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

  1. Apache2 可以配置为apache2使用包的 SAPI或使用with 的libapache2-mod-php7.0FPM SAPI 。php7.0-fpmmod_proxy_fcgi

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

  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 套接字从 更改/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>以搜索正确的包名称。

答案4

我认为您应该删除 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

然后,您可以检查 php 的版本以确保无误。操作方法如下:

php -v

相关内容