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

我试图将我的PHP版本从7还原为5.6,虽然我删除了PHP 7然后安装了PHP 5.6但我似乎仍在运行版本7。

是否有一个简单的方法来移动PHP版本,其中apache,phpMyAdmin和co配置正确?

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

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

 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(也因为你将有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配置为使用libapache2-mod-php7.0软件包的apache2 SAPI或使用带有mod_proxy_fcgi php7.0-fpm 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后禁用PHP 7.0, libapache2-mod-php5.6通过运行a2dismod php7.0启用PHP 5.6。

  4. 如果您使用的是FPM SAPI( php*-fpm ),则需要将/run/php/php7.0-fpm.sock FPM unix套接字/run/php/php7.0-fpm.sock/run/php/php5.6-fpm.sock

  5. 请记住,对于与PHP捆绑的模块(如MySQL),命名约定是phpX.Y- (fe php7.0-mysqlphp5.6-mysql ),但对于外部PECL模块(fe APCu,mongodb ,. ..)它只是php- (fe php-apcuphp-mongodb )。 我建议在您的系统上运行apt-cache search php ,以便在互联网上提问之前搜索正确的包名。

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