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

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

即时更改PHP当前版本的简单方法,甚至逐站点更改都很好。

评论

我似乎安装了5.6,但我的所有php现在都以文本形式呈现。

dpkg -l的输出是什么? grep php | awk'{print $ 2}'| tr“ \ n”“”?

dh-php libapache2-mod-php5 php-common php-json php-pear php-xml php5-cli php5-common php5-json php5-readline php5.6 php5.6-bz2 php5.6-cli php5.6-common php5.6-curl php5.6-dev php5.6-fpm php5.6-gd php5.6-json php5.6-mcrypt php5.6-mysql php5.6-opcache php5.6-readline php7.0-common php7.0-json php7.0-xml pkg-php-tools

我看到一些php7软件包在那里用aptitude purge php7.0-common php7.0-json php7.0-xml删除了它们,我也想知道你的意思是我所有的php现在都以文本形式呈现

这意味着您想念libapache2-mod-php5.6软件包...请参阅下面的答案,您无需删除php7.0

#1 楼

更新
今天,尽管我禁用了php7.0 apache模块,但我仍然再次遇到了PHP 7运行问题: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:




Apache:

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:



Apache:

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



CLI:

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






评论


你说得对,谢谢,我已经修复了命令:)

– Postadelmaga
16年4月25日在5:20

@Postadelmaga它可以更改Web应用程序的PHP版本。非常感谢!但是CLI仍然运行PHP7。您知道如何将其切换到PHP5.6吗?

–约翰·林哈特(John Linhart)
16年4月26日在13:39

最好的方法是删除现有的php程序包,添加Ondrej ppa,然后安装php7和php5.6,请记住您已启用phpenmod -v 5.6来启用php5.6模块和phpenmod -v 7.0来启用php 7.0模块,在此处了解更多信息disqus.com/home/discussion/serversforhackers/…

– razor7
16年4月26日在14:46

帖子挽救了我的一天。

–Shoaib Nawaz
16年5月7日在11:39

@Daenu,因为php -v将显示php cli版本...建议的命令是针对Apache的...如果您在网页中执行phpinfo(),则会看到不同。

– Postadelmaga
16年5月8日,0:43



#2 楼

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快速检查正在使用哪个。

评论


使用sudo a2dismod php7.0 && sudo a2enmod php5.6 && sudo服务apache2 restart来确保仅当前一个命令成功时才运行以下命令。建议对此答案进行编辑。

– Videonauth
16年5月2日在10:30

对于愿意在ubuntu 16.04上同时安装php5.6和php7.0的用户,这是最好的答案

–阿米·贾卢里(Amine Jallouli)
16年5月14日在11:26



像魅力一样工作。我希望我可以多次投票。

– Yogesh Yadav
16-09-30在20:32

#3 楼

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

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


Apache2可以配置为使用apache2软件包使用libapache2-mod-php7.0 SAPI或php7.0-fpm使用mod_proxy_fcgi的FPMSAPI。Ubuntu16.04在存储库中只有PHP 7.0,您可以使用ppa:ondrej/php使用类似的命名方案(例如libapache2-mod-php5.6php5.6-fpm)添加对PHP 5.6的支持。
如果您使用的是Apache2 SAPI(libapache2-mod-php*),则需要在安装libapache2-mod-php5.6后通过运行a2dismod php7.0禁用PHP 7.0,并通过运行a2enmod php5.6来启用PHP 5.6。
如果您使用的是FPM SAPI(php*-fpm),那么您需要将FPM Unix套接字从/run/php/php7.0-fpm.sock更改为/run/php/php5.6-fpm.sock
请记住,对于与PHP捆绑在一起的模块(如MySQL),命名约定为phpX.Y-<ext>(例如php7.0-mysqlphp5.6-mysql),但对于外部PECL模块(例如,fe APCu,mongodb, ...)只是php-<ext>(fe php-apcu,q43 12079q)。我建议您在系统上运行php-mongodb来搜索正确的软件包名称,然后再在Internet上提问。


评论


您能否详细说明一下如何更改FPM Unix套接字?

–麦芽酚
16年6月14日在13:48

#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


评论


我希望您将删除当前的php软件包并重新安装php的事实将对您有很大帮助。

–雷鸟
16年4月24日在9:42

您不需要做grep-awk魔术,因为所有打包的程序都依赖于php5-common,因此很简单:apt-get purge php5-common将清除系统中的所有php5程序包。

– oerdnj
16年4月25日在10:09