我正在尝试将PHP版本从7恢复到5.6,尽管我删除了PHP 7,然后安装了PHP 5.6,但我似乎仍在运行版本7。
是否有一种简单的方法在适当配置apache,phpMyAdmin和co的PHP版本中移动?
即时更改PHP当前版本的简单方法,甚至逐站点更改都很好。
#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.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.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.6
或php5.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-mysql
和php5.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
评论
我似乎安装了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