当前位置: 首页>>技术问答>>正文


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

, , , ,

问题描述

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

是否有一个简单的方法来移动Apache版本,phpMyAdmin和co被适当配置的PHP版本?

一个简单的方法来改变当前的PHP版本,甚至一站一站的网站会很好。

最佳解决思路

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

sudo a2dismod proxy_fcgi proxy; sudo service apache2 restart

1. Re-Install 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

2.切换PHP版本:

  • 从php5.6到php7.0:

    • 阿帕奇:

      sudo a2dismod php5.6 ; sudo a2enmod php7.0 ; sudo service apache2 restart
      
    • CLI:

      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
      
    • CLI:

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

次佳解决思路

Ubuntu 16.04附带了php 7.0,而一些php应用程序可能仍然会因php 7.0而失败。因此,在某些情况下,同时拥有php 7.0php 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.6切换到php 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快速检查您正在使用的是哪一个。

第三种解决思路

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

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

  1. 可以将Apache2配置为使用apache2 SAPI(使用libapache2-mod-php7.0程序包)或使用php7.0-fpm(使用mod_proxy_fcgi)的FPM SAPI。

  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*),则在通过运行a2dismod php7.0安装libapache2-mod-php5.6并通过运行a2enmod php5.6启用PHP 5.6后,需要禁用PHP 7.0。

  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>(f.e. php7.0-mysqlphp5.6-mysql),但对于外部PECL模块(f.e. APCu,mongodb,…),它只是php-<ext>(f.e. php-apcuphp-mongodb)。我建议在您的系统上运行apt-cache search php <ext>以在Internet上询问问题之前搜索正确的程序包名称。

第四种思路

我认为你应该删除你的PHP软件包并安装php5.6。您可以按照以下步骤操作:

sudo aptitude purge dpkg -l | grep php| awk '{print $2}' |tr "\n" " "
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php5.6

然后你可以检查你的php的版本。它的完成如下所示:

php -v

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/318.html,未经允许,请勿转载。