Как мне перейти с PHP 7 на PHP 5.6 в Ubuntu 16.04?
Я пытаюсь вернуть свою версию PHP до 5.6 из 7, и хотя я удалил PHP 7, а затем установил PHP 5.6, я все еще работаю с версией 7.
Есть ли простой способ для перемещения по версиям PHP, где apache, phpMyAdmin и co настроены соответствующим образом?
Простой способ изменить текущую версию PHP на лету и даже сайт за сайтом был бы отличным.
4 ответа
Обновить
Сегодня у меня снова проблема с 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
это подходящий способ включить PHP в Apache для вас, вы можете действовать следующим образом:
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
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
пакет или 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*
), вам нужно отключить PHP 7.0 после установкиlibapache2-mod-php5.6
запустивa2dismod php7.0
и включите PHP 5.6, запустивa2enmod 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>
(кphp7.0-mysql
а такжеphp5.6-mysql
), но для внешних модулей PECL (например, APCu, mongodb, ...) это простоphp-<ext>
(кphp-apcu
,php-mongodb
). Я рекомендую бежатьapt-cache search php <ext>
в вашей системе, чтобы найти правильное имя пакета, прежде чем задавать вопросы в Интернете.
Я думаю, что вы должны удалить свои пакеты 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