Lors de la configuration d'un vhost Ubuntu 16.04, Apache utilisera
PHP 7.0.22-2+ubuntu16.04.1+deb.sury.org+4 .
Cependant, après avoir essayé de résoudre certains conflits en faisant apt-get dist-upgrade
(et à défaut), je me suis retrouvé avec un système gravement endommagé. Depuis, j'ai réussi à restaurer la plupart des versions de packages par défaut, mais Apache utilise
PHP 7.1.8-2+ubuntu16.04.1+deb.sury.org+4 , qui est incompatible avec certaines bibliothèques PHP dont j'ai besoin.
Jusqu'à présent, j'ai essayé :
sudo a2dismod php7.1
sudo a2enmod php7.0
sudo service apache2 restart
Cependant, cela casse Apache et il refuse de redémarrer :
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
Comment puis-je faire en sorte qu'Apache exécute à nouveau la version PHP par défaut (PHP 7.0) ?
Modifier :Un commentaire à mon auto-réponse [maintenant expurgé] ci-dessous par Dan m'a fait réaliser qu'après avoir ajouté le PPA tiers suivant ppa:ondrej/php
peut avoir quelque chose à voir avec le problème.
Donc :
J'ai ajouté le PPA ppa:ondrej/php
sur mon site.
Réponse acceptée :
Je diviserai ma réponse en deux parties. La première partie décrit comment votre problème s'est produit, la deuxième partie est la réponse réelle à votre problème.
Description
D'après le problème que vous décrivez, il semble que vous ayez installé un PPA tiers qui a installé PHP 7.1 sur votre système. Le PPA le plus probable est le PPA d'Ondrej.
Lorsque vous avez installé PHP pour la première fois, vous avez installé la méthode suivante :
sudo apt install php
Le php
package n'est qu'un méta-paquet et ne contient pas les binaires nécessaires. Cela dépend de la dernière version du package PHP disponible (par défaut 7.0). Ainsi, lorsque vous l'installez, le php7.0
le paquet est installé avec php7.0
les dépendances (et libapache2-mod-php7.0
si vous avez apache2
) et toutes ces dépendances sont marquées dans le gestionnaire de packages comme "installées automatiquement".
$ 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).
J'ai mis en gras les parties du résultat de la commande, ce qui explique ce que je viens de mentionner.
En relation:Connexion à distance avec le gestionnaire d'affichage graphique (Gdm, Lightdm) dans Ubuntu ?
Le PHP PPA d'Ondrej propose plusieurs versions de PHP qui peuvent être installées les unes à côté des autres. Ainsi, lorsque vous l'avez ajouté à votre système, apt
trouvé une version plus récente de PHP donc il a remplacé php7.0
* avec php7.1
ainsi que tous les packages associés qui ont été installés automatiquement.
Répondre
Il existe deux méthodes pour résoudre vos problèmes.
-
Supprimez complètement le PPA tiers et revenez aux packages PHP par défaut
sudo apt install ppa-purge sudo ppa-purge ppa:ondrej/php
-
Le PPA d'Ondrej propose plusieurs versions de PHP, vous pouvez donc installer plusieurs versions côte à côte. Mais vous n'activerez que le
php7.0
Module Apache.sudo apt install php7.0 libapache2-mod-php7.0 sudo a2dismod php7.1 sudo a2enmod php7.0 sudo apache2ctl restart
Les installer de la manière précédente définirait le
php7.0
package comme "installé manuellement" dansapt
, afin qu'ils ne soient pas supprimés automatiquement sans que vous les supprimiez vous-même. N'oubliez pas de vous assurer d'installer également tous les modules PHP dont vous avez besoin pour php7.0 (commesudo apt install php7.0-mysql
)
* php7.0
peut avoir été conservé dans votre système installé si vous aviez installé manuellement un module spécifiquement pour php7.0 (par exemple php7.0-mysql
).