我正在尝试将我的 PHP 版本从 7 恢复到 5.6,虽然我删除了 PHP 7 然后安装了 PHP 5.6,但我似乎仍在运行版本 7。
有没有一种简单的方法可以移动 PHP 版本,其中 apache、phpMyAdmin 和 co 已适当配置?
有一种简单的方法可以即时甚至逐个站点地更改 PHP 的当前版本,这将会很棒。
答案1
更新
今天我再次遇到了运行 PHP 7 的问题,尽管我已经禁用了php7.0
apache 模块:phpinfo
显示 php 7 使用 fastCGI......
所以,如果您按照以下说明操作后遇到这种情况,则可能需要禁用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
命令行:
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
命令行:
sudo update-alternatives --set php /usr/bin/php5.6
答案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 快速检查您正在使用哪一个。
答案3
您的问题缺少重要细节,因此我将更广泛地回答。
假设您正在使用包,那么有一些重要的细节:
Apache2 可以配置为
apache2
使用包的 SAPI或使用with 的libapache2-mod-php7.0
FPM SAPI 。php7.0-fpm
mod_proxy_fcgi
Ubuntu 16.04 的存储库中只有 PHP 7.0,您可以使用类似的命名方案(例如或)
ppa:ondrej/php
添加对 PHP 5.6 的支持。libapache2-mod-php5.6
php5.6-fpm
如果您正在使用 Apache2 SAPI(
libapache2-mod-php*
),则需要在安装后libapache2-mod-php5.6
通过运行禁用 PHP 7.0a2dismod php7.0
,并通过运行启用 PHP 5.6a2enmod php5.6
。如果您正在使用 FPM SAPI (
php*-fpm
) 那么您需要将 FPM unix 套接字从 更改/run/php/php7.0-fpm.sock
为/run/php/php5.6-fpm.sock
。请记住,对于与 PHP 捆绑在一起的模块(如 MySQL),命名约定是
phpX.Y-<ext>
(fephp7.0-mysql
和php5.6-mysql
),但对于外部 PECL 模块(fe APCu、mongodb 等),它只是php-<ext>
(fephp-apcu
,php-mongodb
)。我建议在互联网上提问之前,先在您的系统上运行apt-cache search php <ext>
以搜索正确的包名称。
答案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