问题描述
我试图将我的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.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快速检查您正在使用的是哪一个。
第三种解决思路
你的问题缺乏重要的细节,所以我会更广泛地回答。
假设你正在使用软件包,有一些重要的细节:
-
可以将Apache2配置为使用
apache2
SAPI(使用libapache2-mod-php7.0
程序包)或使用php7.0-fpm
(使用mod_proxy_fcgi
)的FPM SAPI。 -
Ubuntu 16.04在版本库中只有PHP 7.0,您可以使用
ppa:ondrej/php
添加对PHP 5.6的支持,使用类似的命名机制(例如libapache2-mod-php5.6
或php5.6-fpm
)。 -
如果您使用的是Apache2 SAPI(
libapache2-mod-php*
),则在通过运行a2dismod php7.0
安装libapache2-mod-php5.6
并通过运行a2enmod php5.6
启用PHP 5.6后,需要禁用PHP 7.0。 -
如果您使用的是FPM SAPI(
php*-fpm
),则需要将FPM unix套接字从/run/php/php7.0-fpm.sock
更改为/run/php/php5.6-fpm.sock
。 -
请记住,与PHP捆绑的模块(如MySQL)的命名约定是
phpX.Y-<ext>
(f.e.php7.0-mysql
和php5.6-mysql
),但对于外部PECL模块(f.e. APCu,mongodb,…),它只是php-<ext>
(f.e.php-apcu
,php-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