Вопрос Как я могу отказаться от PHP 7 до PHP 5.6 на Ubuntu 16.04? [Дубликат]


На этот вопрос уже есть ответ:

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

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

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


157
2018-04-24 09:21


происхождения


Кажется, у меня установлено 5.6, но все мои php теперь отображаются как текст. - dibs
какой результат dpkg -l | grep php| awk '{print $2}' |tr "\n" " " ? - storm
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 - dibs
Я вижу, что некоторые пакеты php7 удаляют их с помощью aptitude purge php7.0-common php7.0-json php7.0-xml  также я хочу знать, что вы подразумеваете под all my php is rendering as text now - storm
это означает, что вы пропустите libapache2-mod-php5.6 пакет ... см. мой ответ ниже, вам не нужно удалять php7.0 - Postadelmaga


ответы:


Обновить
Сегодня у меня снова возникла проблема с запуском 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
      

296
2018-04-25 02:58



вы правы, спасибо, я исправил команды :) - Postadelmaga
@Postadelmaga Он работает, чтобы изменить версию PHP для веб-приложений. Большое спасибо! Но CLI по-прежнему работает с PHP7. Вы знаете, как переключить это на PHP5.6? - John Linhart
Лучший способ сделать это - удалить фондовые пакеты php, добавить Ondrej ppa, а затем установить php7 и php5.6, помните, что у вас есть phpenmod -v 5.6, чтобы включить модуль php5.6 и phpenmod -v 7.0 для включения модуля php 7.0, больше информации здесь disqus.com/home/discussion/serversforhackers/... - razor7
Сообщение спас мой день. - Shoaib Nawaz
@Daenu, потому что php -v покажет вам версию php cli ... команда, предложенная для Apache ... если вы делаете phpinfo() на веб-странице вы увидите разницу. - Postadelmaga


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.


48
2018-05-02 09:29



использование sudo a2dismod php7.0 && sudo a2enmod php5.6 && sudo service apache2 restart чтобы убедиться, что следующие команды выполняются только в том случае, если перед тем, как это будет выполнено. Предлагается отредактировать этот ответ. - Videonauth
Это лучший ответ для тех, кто хочет установить оба php5.6 а также php7.0 на ubuntu 16.04 - Amine Jallouli
Работал как шарм. Хотелось бы, чтобы я мог его продвигать несколько раз. - shiva


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

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

  1. Apache2 можно настроить для использования apache2 Использование SAPI 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), тогда вам нужно сменить сокет 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 (например, APCu, mongodb, ...) это просто php-<ext> (F.E. php-apcu, php-mongodb). Я рекомендую бежать apt-cache search php <ext> в вашей системе, чтобы найти правильное имя пакета, прежде чем задавать вопросы в Интернете.


11
2018-04-24 10:04



Можете ли вы немного рассказать о том, как изменить сокет Unix FPM? - myol


Я думаю, вы должны удалить свои php-пакеты и установить php5.6. Вы можете действовать следующим образом:

sudo aptitude purge dpkg -l | grep php| awk '{print $2}' |tr "\n" " "
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php5.6

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

php -v

5
2018-04-24 09:38



Я надеюсь, что тот факт, что вы удалите свои текущие пакеты php и установите php, будет очень полезен вам. - Yufenyuy Veyeh Dider
Вам не нужно делать магию grep-awk, поскольку все упакованные зависят от php5-common, так просто: apt-get purge php5-common очистит все пакеты php5 из вашей системы. - oerdnj