Как я могу перейти с PHP 7 на PHP 5.6 в Ubuntu 16.04?

Я пытаюсь вернуть свою версию PHP до 5.6 с 7, и хотя я удалил PHP 7, а затем установил PHP 5.6, я, похоже, все еще использую версию 7.

Существует ли простой способ перехода по версиям PHP, где apache, phpMyAdmin и co настроены соответствующим образом?

Простой способ изменить текущую версию PHP на лету и даже сайт за сайтом был бы отличным.

Обновление
Сегодня у меня снова возникла проблема с запуском 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/phpsudo apt-get updatesudo 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 suroot@computer# add-apt-repository ppa:ondrej/phproot@computer# apt-get updateroot@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 appssudo a2dismod php5.6 && sudo a2enmod php7.0 && sudo service apache2 restart# For php-cli in the command linesudo ln -sfn /usr/bin/php7.0 /etc/alternatives/php

или с php7.0 на php5.6:

# For php in web appssudo a2dismod php7.0 && sudo a2enmod php5.6 && sudo service apache2 restart# For php-cli in the command linesudo ln -sfn /usr/bin/php5.6 /etc/alternatives/php

Вы также можете быстро проверить, какой из них используется вашим, запустив php -v.

В вашем вопросе не хватает важных деталей, поэтому я отвечу более широко.

Предполагая, что вы используете пакеты, есть некоторые важные детали:

  1. Apache2 может быть настроен на использование либо apache2 САПИ, использующий libapache2-mod-php7.0 пакет или FPM SAPI с использованием php7.0-fpm с mod_proxy_fcgi.

  2. Ubuntu 16.04 имеет только PHP 7.0 в репозиториях, вы можете использовать ppa:ondrej/php чтобы добавить поддержку PHP 5.6, используя аналогичную схему именования (например libapache2-mod-php5.6 или php5.6-fpm).

  3. Если вы используете Apache2 SAPI (libapache2-mod-php*), вам необходимо отключить PHP 7.0 после установки libapache2-mod-php5.6 запустив a2dismod php7.0 и включите PHP 5.6, запустив a2enmod php5.6.

  4. Если вы используете FPM SAPI (php*-fpm) затем вам нужно изменить сокет FPM unix с /run/php/php7.0-fpm.sock к /run/php/php5.6-fpm.sock.

  5. Пожалуйста, помните, что для модулей, поставляемых в комплекте с 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/phpsudo apt-get updatesudo apt-get install php5.6

Затем вы можете проверить версию вашего php, чтобы быть уверенным. Это делается, как показано ниже:

php -v

это означает, что вы пропустили пакет libapache2-mod-php5.6' ... смотрите Мой ответ ниже, вам не нужно удалять php7.0`

Похоже, у меня установлен 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 теперь отображается в виде текста”

Я удалил пакеты php7, но страницы по-прежнему остаются текстовыми. В данный момент я, кажется, хожу по кругу. Я обновлю эту страницу, когда разберусь с ней.

По этой ссылке (versions - Install PHP 5.3 on Ubuntu 13.04 - Ask Ubuntu ) разве не рекомендуется не устанавливать предыдущую версию PHP на более позднюю версию ОС? Например - Ubuntu 16.04 поддерживает PHP 7+.