GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Wie bringt man Apache dazu, Php 7.0 (nicht 7.1) zu verwenden?

Beim Einrichten eines Ubuntu 16.04-Vhosts verwendet Apache
PHP 7.0.22-2+ubuntu16.04.1+deb.sury.org+4 .

Nachdem Sie jedoch versucht haben, einige Konflikte zu lösen, indem Sie apt-get dist-upgrade ausführen (und scheiterte), endete ich mit einem stark kaputten System. Seitdem habe ich es geschafft, die meisten Paketversionen auf die Standardversionen zurückzusetzen, aber Apache verwendet
PHP 7.1.8-2+ubuntu16.04.1+deb.sury.org+4 , das mit einigen PHP-Bibliotheken, die ich benötige, nicht kompatibel ist.

Bisher habe ich versucht:

sudo a2dismod php7.1
sudo a2enmod php7.0
sudo service apache2 restart

Dies bricht jedoch Apache ab und verweigert den Neustart:

Syntax error on line 140 of /etc/apache2/apache2.conf: Syntax error on line 3 of /etc/apache2/mods-enabled/php7.0.load: Cannot load /usr/lib/apache2/modules/libphp7.0.so

Wie kann ich Apache dazu bringen, die Standard-PHP-Version (PHP 7.0) wieder auszuführen?

Bearbeiten :Ein Kommentar zu meiner [jetzt redigierten] Selbstantwort unten von Dan machte mir klar, dass ich das folgende Drittanbieter-PPA ppa:ondrej/php hinzugefügt habe kann etwas mit dem Problem zu tun haben.

Also:
Ich habe den PPA ppa:ondrej/php hinzugefügt zu meiner Seite.

Akzeptierte Antwort:

Ich werde meine Antwort in zwei Teile aufteilen. Der erste Teil beschreibt, wie Ihr Problem aufgetreten ist, der zweite Teil ist die eigentliche Antwort auf Ihr Problem.

Beschreibung

Aus dem von Ihnen beschriebenen Problem geht hervor, dass Sie ein Drittanbieter-PPA installiert haben, das PHP 7.1 auf Ihrem System installiert hat. Das wahrscheinlichste PPA ist das PPA von Ondrej.

Als Sie PHP zum ersten Mal installiert haben, haben Sie die Installation mit der folgenden Methode durchgeführt:

sudo apt install php

Die php Paket ist nur ein Metapaket und enthält nicht die benötigten Binärdateien. Dies hängt von der neuesten Version des verfügbaren PHP-Pakets ab (standardmäßig 7.0). Wenn Sie es also installieren, wird der php7.0 Paket wird zusammen mit php7.0 installiert ’s-Abhängigkeiten (und libapache2-mod-php7.0 wenn Sie apache2 haben ) und alle diese Abhängigkeiten werden im Paketmanager als „automatisch installiert“ markiert.

$ apt show php
Package: php
Version: 1:7.0+35ubuntu6
Priority: optional
Section: php
Source: php-defaults (35ubuntu6)
Origin: Ubuntu
Maintainer: Ubuntu Developers 
Original-Maintainer: Debian PHP Maintainers 
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 11.3 kB
Depends: php7.0
Supported: 5y
Download-Size: 2,832 B
APT-Manual-Installed: yes
APT-Sources: http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages
Description: server-side, HTML-embedded scripting language (default)
 PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
 open source general-purpose scripting language that is especially suited
 for web development and can be embedded into HTML.
 .
 This package is a dependency package, which depends on Debian's default
 PHP version (currently 7.0).

Ich habe die Teile des Befehlsergebnisses fett gedruckt, was erklärt, was ich gerade erwähnt habe.

Verwandte:Remote-Anmeldung mit Graphical Display Manager (Gdm, Lightdm) in Ubuntu?

Ondrejs PHP PPA bietet mehrere PHP-Versionen, die nebeneinander installiert werden können. Also, wenn Sie es Ihrem System hinzugefügt haben, apt eine neuere Version von PHP gefunden, die php7.0 ersetzt hat * mit php7.1 zusammen mit allen zugehörigen Paketen, die automatisch installiert wurden.

Antwort

Es gibt zwei Methoden, um Ihre Probleme zu beheben.

  1. Entfernen Sie das Drittanbieter-PPA vollständig und kehren Sie zu den Standard-PHP-Paketen zurück

    sudo apt install ppa-purge
    sudo ppa-purge ppa:ondrej/php
    
  2. Ondrejs PPA bietet mehrere Versionen von PHP, sodass Sie mehr als eine Version nebeneinander installieren können. Aber Sie würden nur php7.0 aktivieren Apache-Modul.

    sudo apt install php7.0 libapache2-mod-php7.0
    sudo a2dismod php7.1
    sudo a2enmod php7.0
    sudo apache2ctl restart
    

    Wenn Sie sie auf die vorherige Weise installieren, wird php7.0 gesetzt Paket als „manuell installiert“ in apt , sodass sie nicht automatisch entfernt werden, ohne dass Sie sie selbst entfernen. Vergessen Sie nicht, auch alle PHP-Module zu installieren, die Sie für php7.0 benötigen (wie sudo apt install php7.0-mysql )

* php7.0 möglicherweise in Ihrem System installiert, wenn Sie manuell ein Modul speziell für php7.0 installiert haben (zum Beispiel php7.0-mysql ).


Ubuntu
  1. Wie verwende ich die E2E Networks-API?

  2. So installieren Sie Apache, MySQL, PHP (LAMP) unter Ubuntu 16.04 LTS

  3. So zwingen Sie Apache, HTTPS zu verwenden

  4. Apache 2 konnte nicht gebunden werden, Adresse bereits verwendet?

  5. So erhalten Sie MySQL/Apache/PHP-Versionen

So installieren Sie Apache 2.4 und PHP 7.4 unter Amazon Linux

So installieren Sie Apache, MySQL und PHP unter Ubuntu 20.04

So installieren Sie Apache und PHP unter OpenSUSE 15.1

Wie bekomme ich den Wubi-Installer dazu, eine vorab heruntergeladene Iso zu verwenden?

Verwendung von PHP 4.4.9 (FastCGI) mit Apache &ISPConfig 3 (Debian Wheezy)

Wie verwende ich Apache SpamAssassin in cPanel?