Я пытаюсь изменить версию PHP на 5.6 с 7, и хотя я удалил PHP 7, а затем установил PHP 5.6, кажется, что я все еще работаю с версией 7.
Существует ли простой метод перехода между версиями PHP, при котором apache, phpMyAdmin и co настроены должным образом?
Простой способ изменить текущую версию PHP на лету и даже для каждого сайта был бы замечательным.
Обновление
Сегодня у меня снова возникла проблема с запуском PHP 7, несмотря на то, что я отключил php7.0
модуль apache: phpinfo
показывал php 7, используя fastCGI ...
... Так что если после выполнения приведенных ниже инструкций вы столкнетесь с этой ситуацией, вам может понадобиться отключить модуль apache proxy_fcgi
:
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 7.0.Поэтому, в некоторых случаях, это может быть разумным, чтобы иметь как на PHP 7.0 " и " в PHP 5.х
, так что вы можете выбрать, какую версию использовать для ваших нужд в любое время.
Вы можете сделать это с:
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 -В.
В вашем вопросе не хватает важных деталей, поэтому я отвечу более широко.
Если предположить, что вы используете пакеты, есть несколько важных деталей:
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
), то вам необходимо изменить unix-сокет FPM с /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