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

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

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

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

168
задан 26 April 2016 в 00:24

4 ответа

Обновление
Сегодня я получил снова проблему с PHP 7, работающим несмотря на, я отключил php7.0 апачский модуль: phpinfo показывал php 7 с помощью fastCGI...
... Таким образом, если после того, как Вы следуете ниже инструкций, Вы сталкиваетесь с этой ситуацией, Вы, возможно, должны отключить 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
      
321
ответ дан 26 April 2016 в 10:24

Ubuntu 16.04 идет php 7.0, и некоторые php приложения могли бы все еще перестать работать с php 7.0 .Therefore, в некоторых случаях, могло бы быть разумно иметь обоих 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.

50
ответ дан 26 April 2016 в 10:24

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

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

  1. Apache2 может быть настроен для использования также apache2 Использование SAPI libapache2-mod-php7.0 пакет или использование SAPI FPM 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. Если Вы используете SAPI FPM (php*-fpm) затем необходимо изменить сокет Unix FPM от /run/php/php7.0-fpm.sock кому: /run/php/php5.6-fpm.sock.

  5. Помните, что для модулей, связанных 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> в Вашей системе для поиска корректного имени пакета прежде, чем задать вопросы в Интернете.

11
ответ дан 26 April 2016 в 10:24

Я думаю, что необходимо удалить 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
5
ответ дан 26 April 2016 в 10:24

Другие вопросы по тегам:

Похожие вопросы: