GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak přimět Apache, aby používal PHP 7.0 (ne 7.1)?

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.

  1. 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
    
  2. 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“ v apt , 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 (jako sudo 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 ).


Ubuntu
  1. Jak nainstalovat Apache, MySQL, PHP (LAMP) na Ubuntu 16.04 LTS

  2. Jak nainstalovat PHP bez webového serveru Apache?

  3. Jak používat EasyApache 3 s WHM/cPanel

  1. Jak používat E2E Networks API?

  2. Jak přinutit Apache používat HTTPS

  3. Apache 2 nelze svázat, adresa se již používá?

  1. Jak nainstalovat a používat PHP Composer na Ubuntu 16.04

  2. Jak nainstalovat a používat PHP Composer na Ubuntu 18.04

  3. Jak získat verze MySQL/Apache/PHP