16
juin
2023
15:42

Comment installer PHP 7.0, PHP 7.1, PHP 7.2, PHP 7.3 ou PHP 7.4 dans Ubuntu 22.04 "Jammy Jellyfish" ou Linux Mint 21.1 "Vera" et commuter la version

16 juin 2023 15:42

Dans la nouvelle version d'Ubuntu 22.04, l'installation du référentiel ondrej des anciennes versions de PHP est liée aux difficultés.

Arrière-plan

Je voulais installer une diminution de la version PHP de 8.1 sur PHP 7.4, mais cela s'est avéré difficile sur la version fraîche d'Ubuntu "Jammy" (Linux Mint "Vera").
Dans les versions récentes, PHP 8.1 est fabriqué exclusivement, lors de la recherche de la recherche APT-CACH PHP7, rien ne l'est.

Ajoutant des référentiels de développeurs, j'ai terminé l'équipe selon les instructions:

sudo add-apt-repository ppa:ondrej/apache2

sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php

erreur
GPG: Échec lors de la réception des clés du serveur: URI inacceptable

Lors de la performance

sudo apt update

Des erreurs ont été émises:

W: Bug GPG: https://ppa.launchpadcontent.net/ondrej/apache2/ubuntu Jammy Inrelease: Les signatures suivantes ne peuvent pas être testées, car la clé ouverte n'est pas disponible: No_pubkey 4F4EAEA5267A6C
E: Le référentiel «https://ppa.launchpadcontent.net/ondrej/apache2/ubuntu Jammy Inrelease» n'a pas été signé.

W: Bug GPG: https://ppa.launchpadcontent.net/ondrej/php/ubuntu Jammy Inrelease: Les signatures suivantes ne peuvent pas être vérifiées, car la clé ouverte n'est pas disponible: No_pubkey 4F4EAE5267A6C
E: Le référentiel «https://ppa.launchpadcontent.net/ondrej/php/ubuntu Jammy Inrelease» n'a pas été signé.

J'ai essayé d'ajouter une clé de signature au système à l'aide des commandes, mais l'erreur a été préservée:

gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 4F4EA0AAE5267A6C
gpg --export 4F4EA0AAE5267A6C | sudo tee /etc/apt/trusted.gpg.d/php_ondrej.gpg > /dev/null

Mais l'équipe de mise à jour APT a donné une erreur, car les deux référentiels de l'Ondrej ont été déconnectés dans le système, car non signé. Je n'ai pas trouvé le ligament clé GPG pour les clés GPG pour le référentiel Oandrej. En conséquence, pour exécuter le sudo gpg --impport command name_fila.gpg n'était pas possible.

Bunque clé qui est à la fin de la page https://www.php.net/gpg-keys.php не помогла (sudo sudo gpg --import php-keyring.gpg), т.е. в файле gpg оказались ключи других разработчиков.

Solution

Il est nécessaire d'ouvrir des fichiers dans le catalogue Sources pour l'édition:

cd /etc/apt/sources.list.d

Nous regardons ce qui est

 ls ondrej*

Résultat:

ondrej-apache2-jammy.list ondrej-php-bionic.list ondrej-php-jammy.list

À son tour, nous ouvrons les fichiers ondrej \ *. Liste pour changer dans l'éditeur Nano:

1) Repository ondrej pour le serveur Web Apache2

sudo nano ondrej-apache2-jammy.list

Corrigez la première ligne, en supprimant le texte lié à la signature.

Était:
deb [arch=amd64 signed-by=/etc/apt/keyrings/ondrej-apache2-jammy.gpg] https://ppa.launchpadcontent.net/ondrej/apache2/ubuntu jammy main

C'est devenu:
deb https://ppa.launchpadcontent.net/ondrej/apache2/ubuntu jammy main

2) Repository ondrej pour les versions PHP

sudo nano ondrej-php-jammy.list

Était:
deb [arch=amd64 signed-by=/etc/apt/keyrings/ondrej-php-jammy.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main

C'est devenu:
deb https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main

Résultat

sudo apt update

Erreurs No (sur la clé d'avertissement "La clé est stockée dans Legasted.gpg Keyring (/etc/apt/trusted.gpg), consultez la section de déprédion dans APT-Key (8) pour plus de détails." Nous ne faisons pas attention)

Vous pouvez maintenant installer PHP 7.4:

sudo apt install php7.4
sudo apt install php7.4-{cli,common,curl,zip,gd,mysql,xml,mbstring,json,intl}

Comment passer la version PHP de 8.1 à 7.4 et vice versa dans le système?

php --version

PHP 8.1.2-1ubuntu2.11 (CLI) (Construit: 22 février 2023 22:56:18) (NTS)

La commutation PHP dans le système est fabriquée par commande

sudo update-alternatives --config php

Il existe 3 options pour l'alternative PHP (fournit / usr / bin / php).

CHOIX CHOIX CONDITION -------------------------------------------------------- * 0 /usr/bin/php.default 100 mode automatique 1 /usr/bin/php.default 100 ручной режим 2 /usr/bin/php7.4 74 ручной режим 3 /usr/bin/php8.1 81 ручной режим Cliquez sur "Entrer" afin de ne pas modifier le choix actuel [*], ou entrez le bon numéro: Lorsque vous appuyez sur 2, l'interprète PHP passera à la version 7.4. php --version PHP 7.4.33 (CLI) (Construit: 8 juin 2023 15:23:32) (NTS) Une autre façon de changer les commandes PHP: ** 8.1 -> 7,4 ** sudo update-alternatives --set php /usr/bin/php7.4 ** 7.4 -> 8.1 ** sudo update-alternatives --set php /usr/bin/php8.1 ### PHP passe au serveur Web Apache2 ! Supplément à partir du 07.2023: ** Le module PHP 7.4 pour Apache2 doit être installé à l'avance: ** sudo apt-get install libapache2-mod-php7.4 ** 8.1 -> 7,4 ** sudo a2dismod php8.1 sudo a2enmod php7.4 ** 7.4 -> 8.1 ** sudo a2dismod php7.4 sudo a2enmod php8.1 ### Examen Créez le fichier Test.php le plus simple et ouvrez-le à partir de la ligne cible du navigateur à partir du serveur Web: Lors de l'ouverture de l'URL, la fonction phpinfo () doit être obtenue. Dans la ligne "Path Fichier de configuration (PHP.INI)" en complet au fichier php.ini, la version actuelle de PHP utilisée par l'interprète sera affichée, par exemple, 7.4. ### Fermeture fastcgi La présence d'une version de module FPM négligée du PHP 8.1 peut être vérifiée par une commande de la console: sudo systemctl status php8.1-fpm Dans mon cas, FPM est lancé et utilise PHP 8.1 (ignorer la version du module PHP7.4 dans Apache2):
 php8.1-fpm.service - le gestionnaire de processus FastCGI Php 8.1
     Loaded: loaded (/lib/systemd/system/php8.1-fpm.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2023-07-04 09:01:29 MSK; 38min ago
       Docs: man:php-fpm8.1(8)
    Process: 1411 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.1/fpm/pool.d/www.conf 81>
   Main PID: 1207 (php-fpm8.1)
     Status: "Processes active: 0, idle: 2, Requests: 2, slow: 0, Traffic: 0req/sec" 
      Tasks: 3 (limit: 3408)
     Memory: 23.7M
        CPU: 254ms
     CGroup: /system.slice/php8.1-fpm.service
             ├─1207 "php-fpm: master process (/etc/php/8.1/fpm/php-fpm.conf)"   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   "" >
             ├─1409 "php-fpm: pool www"   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   "">
             └─1410 "php-fpm: pool www"   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""
De plus, lors de l'utilisation de FastCGI (PHP-FPM), l'utilisation d'une version 8.1 erronée est visible par commande **`echo phpinfo()`**;. Pour faire la version 7.4, j'ai éteint le module PHP-FPM sur le serveur de test Apache2, commande: sudo a2dismod actions alias proxy_fcgi setenvif Ensuite, a confirmé la fermeture: "Oui, faites ce que je dis!" Complété le redémarrage du serveur Apache2: sudo systemctl restart apache2 Maintenant phpinfo () montre la version dont j'ai besoin - 7.4 (au lieu de 8.1): `Configuration File (php.ini) Path /etc/php/7.4/apache2` `Loaded Configuration File (none)` `Scan this dir for additional .ini files /etc/php/7.4/apache2/conf.d` --- _ Dernier changement: 02.06.2025: Remplacement GPG --Export --Armor 4F4EA0AAE5267A6C | Sudo apt -key add - sur GPG - EXPORT 4F4EA0AAE5267A6C | Sudo tee /tc/apt/trusted.gpg.d/php_ondrej.gpg>/dev/null _


Publications connexes