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.
-
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
-
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“ inapt
, 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 (wiesudo 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
).