Při nastavování Ubuntu 16.04 vhost bude Apache používat
PHP 7.0.22-2+ubuntu16.04.1+deb.sury.org+4 .
Po pokusu o vyřešení některých konfliktů provedením apt-get dist-upgrade
(a když jsem selhal), skončil jsem se špatně rozbitým systémem. Od té doby se mi podařilo vrátit většinu verzí balíčků zpět na ty, které jsou výchozí, ale Apache používá
PHP 7.1.8-2+ubuntu16.04.1+deb.sury.org+4 , který je nekompatibilní s některými PHP-knihovnami, které potřebuji.
Zatím jsem zkusil:
sudo a2dismod php7.1
sudo a2enmod php7.0
sudo service apache2 restart
Tím se však Apache přeruší a odmítne se restartovat:
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
Jak mohu přimět Apache, aby znovu spustil výchozí verzi PHP (PHP 7.0)?
Upravit :Komentář k mé [nyní redigované] vlastní odpovědi níže od Dana uvědomil jsem si, že přidáním následujícího PPA třetí strany ppa:ondrej/php
může mít s problémem něco společného.
Takže:
Přidal jsem PPA ppa:ondrej/php
na můj web.
Přijatá odpověď:
Svoji odpověď rozdělím na dvě části. První část popisuje, jak k vašemu problému došlo, druhá část je skutečnou odpovědí na váš problém.
Popis
Z problému, který popisujete, se zdá, že jste nainstalovali PPA třetí strany, která na váš systém nainstalovala PHP 7.1. Nejpravděpodobnější PPA je Ondřejova PPA.
Při první instalaci PHP jste provedli instalaci následujícím způsobem:
sudo apt install php
Soubor php
balíček je pouze meta balíček a neobsahuje potřebné binární soubory. Závisí to na nejnovější verzi dostupného balíčku PHP (ve výchozím nastavení 7.0). Takže když jej nainstalujete, php7.0
balíček je nainstalován spolu s php7.0
závislosti (a libapache2-mod-php7.0
pokud máte apache2
) a všechny tyto závislosti jsou ve správci balíčků označeny jako „automaticky nainstalováno“.
$ 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).
Části výsledku příkazu jsem označil tučně, což vysvětluje to, co jsem právě zmínil.
Související:Vzdálené přihlášení pomocí správce grafického zobrazení (Gdm, Lightdm) v Ubuntu?
Ondřejův PHP PPA nabízí více verzí PHP, které lze nainstalovat vedle sebe. Takže když jste to přidali do svého systému, apt
našel novější verzi PHP, takže nahradil php7.0
* pomocí php7.1
spolu se všemi souvisejícími balíčky, které byly automaticky nainstalovány.
Odpověď
Problémy lze vyřešit dvěma způsoby.
-
Zcela odstraňte PPA třetí strany a vraťte se zpět k výchozím balíkům PHP
sudo apt install ppa-purge sudo ppa-purge ppa:ondrej/php
-
Ondřejova PPA nabízí více verzí PHP, takže si můžete nainstalovat více verzí vedle sebe. Ale povolili byste pouze
php7.0
Modul Apache.sudo apt install php7.0 libapache2-mod-php7.0 sudo a2dismod php7.1 sudo a2enmod php7.0 sudo apache2ctl restart
Jejich instalace výše uvedeným způsobem by nastavila
php7.0
balíček jako „ručně nainstalován“ vapt
, takže nebudou automaticky odstraněny, aniž byste je odstranili sami. Nezapomeňte se ujistit, že jste nainstalovali všechny moduly PHP, které potřebujete pro php7.0 (jakosudo apt install php7.0-mysql
)
* php7.0
mohou být ve vašem systému nainstalované, pokud jste ručně nainstalovali modul speciálně pro php7.0 (například php7.0-mysql
).