it-swarm.com.de

Wie kann ich ein Downgrade von PHP 7 auf PHP 5.6 unter Ubuntu 16.04 durchführen?

Ich versuche, meine PHP Version von 7 auf 5.6 zurückzusetzen, und obwohl ich PHP 7 entfernt und dann PHP 5.6 installiert habe, läuft scheinbar immer noch Version 7.

Gibt es eine einfache Methode, um durch PHP Versionen zu navigieren, in denen Apache, phpMyAdmin und co entsprechend konfiguriert sind?

Eine einfache Möglichkeit, die aktuelle Version von PHP direkt und sogar von Site zu Site zu ändern, wäre großartig.

165
dibs

Update
Heute habe ich wieder ein Problem mit PHP 7, obwohl ich php7.0 Apache-Modul deaktiviert habe: phpinfo zeigte PHP 7 mit fastCGI ...
... Wenn Sie die folgenden Anweisungen befolgen, müssen Sie möglicherweise das Apache-Modul proxy_fcgi deaktivieren:

Sudo a2dismod proxy_fcgi proxy; Sudo service Apache2 restart

1. Neuinstallation von PHP 5.6

Was für mich funktioniert hat, war diese Anleitung: http://www.lornajane.net/posts/2016/php-7-0-and-5-6-on-ubunt

Eigentlich ist es nicht erforderlich, php7.0 zu entfernen. Sie können php5.6 zusammen installieren (auch, weil Sie ein Abhängigkeitsproblem mit dem phpmyadmin -Paket haben, das php7.0 erfordert).

Angenommen, libapache2-mod-php ist eine geeignete Methode, um PHP in Apache für Sie zu aktivieren, dann können Sie folgendermaßen vorgehen:

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 Version wechseln :

  • Von Php5.6 bis 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
      
  • Von php7.0 zu 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
      
316
Postadelmaga

Ubuntu 16.04 wird mit php 7.0 geliefert, und einige php -Anwendungen schlagen möglicherweise mit php 7.0 immer noch fehl. In einigen Fällen ist es daher sinnvoll, sowohl php 7.0 als auch php 5.x zu verwenden ] _, sodass Sie jederzeit auswählen können, welche Version für Ihre Anforderungen verwendet werden soll.

Sie können dies tun mit:

[email protected]# Sudo su
[email protected]# add-apt-repository ppa:ondrej/php
[email protected]# apt-get update
[email protected]# 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

Die Installation von beiden php5.6 & php7.0 war in meinem Fall sauber: keine Beschwerden über Probleme usw.

Um von php 5.6 zu php 7.0 zu wechseln, müssen Sie zwei Dinge tun:

# 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

oder von php7.0 auf 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

Sie können auch schnell überprüfen, welche von Ihnen verwendet wird, indem Sie php -v ausführen.

Ihrer Frage fehlen wichtige Details, deshalb werde ich breiter antworten.

Angenommen, Sie verwenden Pakete, gibt es einige wichtige Details:

  1. Apache2 kann so konfiguriert werden, dass entweder Apache2 SAPI mit libapache2-mod-php7.0 Paket oder FPM SAPI mit php7.0-fpm mit mod_proxy_fcgi verwendet wird.

  2. Ubuntu 16.04 enthält nur PHP 7.0 in den Repositorys. Sie können ppa:ondrej/php verwenden, um Unterstützung für PHP 5.6 hinzuzufügen, wobei ein ähnliches Benennungsschema verwendet wird (z. B. libapache2-mod-php5.6 oder php5.6-fpm).

  3. Wenn Sie Apache2 SAPI (libapache2-mod-php*) verwenden, müssen Sie PHP 7.0 deaktivieren, nachdem Sie libapache2-mod-php5.6 installiert haben, indem Sie a2dismod php7.0 ausführen und PHP aktivieren 5.6 indem Sie a2enmod php5.6 ausführen.

  4. Wenn Sie FPM-SAPI (php*-fpm) verwenden, müssen Sie den FPM-Unix-Socket von /run/php/php7.0-fpm.sock in /run/php/php5.6-fpm.sock ändern.

  5. Bitte beachten Sie, dass für mit PHP (wie MySQL) gebündelte Module die Namenskonvention phpX.Y-<ext> (zB php7.0-mysql und php5.6-mysql) lautet, für externe PECL-Module (zB APCu) , mongodb, ...) es ist nur php-<ext> (zB php-apcu, php-mongodb). Ich empfehle, apt-cache search php <ext> auf Ihrem System auszuführen, um nach dem richtigen Paketnamen zu suchen, bevor Sie im Internet Fragen stellen.

11
oerdnj

Ich denke, Sie sollten Ihre PHP-Pakete entfernen und PHP5.6 installieren. Sie können wie folgt vorgehen:

Sudo apt-get purge php7.*
Sudo add-apt-repository ppa:ondrej/php
Sudo apt-get update
Sudo apt-get install php5.6

Sie können dann die Version Ihres PHP überprüfen, um sicher zu sein. Dies geschieht wie folgt:

php -v