16
Juni
2023
15:42

So installieren Sie PHP 7.0, Php 7.1, Php 7.2, Php 7.3 oder Php 7.4 in Ubuntu 22.04 "Jammy Jellyfish" oder Linux Mint 21.1 "Vera" und wechseln Sie die Version

16 Juni 2023 15:42

In der neuen Version von Ubuntu 22.04 hängt die Installation aus dem Ondrej -Repository der alten Versionen von PHP mit Schwierigkeiten zusammen.

Hintergrund

Ich wollte eine Abnahme der PHP -Version von 8.1 bei PHP 7.4 installieren, aber es stellte sich heraus, dass die frische Version von Ubuntu "Jammy" (Linux Mint "Vera") schwierig war.
In jüngsten Versionen wird Php 8.1 ausschließlich erstellt, wenn nach der APT-Cache-Suche PHP7 nichts ist.

Addiere Entwickler -Repositories und habe das Team gemäß den Anweisungen abgeschlossen:

sudo add-apt-repository ppa:ondrej/apache2

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

Fehler
GPG: Fehler beim Empfangen von Schlüssel vom Server: inakzeptable URI

Bei der Ausführung

sudo apt update

Fehler wurden ausgestellt:

W: Bug GPG: https://ppa.launchpadcontent.net/ondrej/apache2/ubuntu Jammy Inrelease: Die folgenden Unterschriften können nicht getestet werden, da der offen
E: Das Repository "https://ppa.launchpadcontent.net/ondrej/apache2/ubuntu Jammy Inrelease" wurde nicht unterzeichnet.

W: Bug GPG: https://ppa.launchpadcontent.net/ondrej/php/ubuntu Jammy Inrelease: Die folgenden Unterschriften können nicht überprüft werden, da der offen
E: Das Repository "https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy Inrelease" wurde nicht unterzeichnet.

Ich habe versucht, dem System einen Signaturschlüssel mit den Befehlen hinzuzufügen, aber der Fehler wurde erhalten:

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

Das APT -Update -Team hat jedoch einen Fehler gemacht, da beide Repositorys der Ondrej im System getrennt wurden, weil sie nicht unterschrieben waren. Ich habe das GPG -Schlüsselband für die GPG -Schlüssel für das Oandrej -Repository nicht gefunden. Dementsprechend war es nicht möglich, die Sudo GPG -Befehlsname_Fila.gpg auszuführen.

Schlüsselhaufen, der am Ende der Seite steht https://www.php.net/gpg-keys.php не помогла (sudo sudo gpg --import php-keyring.gpg), т.е. в файле gpg оказались ключи других разработчиков.

Lösung

Es ist erforderlich, Dateien im Quellenkatalog zur Bearbeitung zu öffnen:

cd /etc/apt/sources.list.d

Wir schauen uns an, was ist

 ls ondrej*

Ergebnis:

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

Wir öffnen wiederum die Dateien Ondrej *. LISTE, um sich im Nano -Editor zu ändern:

1) Repository Ondrej für Apache2 Webserver

sudo nano ondrej-apache2-jammy.list

Korrigieren Sie die erste Zeile und entfernen Sie den Text in Bezug auf die Signatur.

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

Es wurde:
deb https://ppa.launchpadcontent.net/ondrej/apache2/ubuntu jammy main

2) Repository Ondrej für PHP -Versionen

sudo nano ondrej-php-jammy.list

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

Es wurde:
deb https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main

Ergebnis

sudo apt update

Fehler no (auf der Warnung "wird in legasted.gpg keyring (/etc/apt/trusted.gpg) gespeichert.

Jetzt können Sie PHP 7.4 installieren:

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

Wie wechsle ich die PHP -Version von 8.1 auf 7.4 und umgekehrt im System?

php --version

Php 8.1.2-1ubuntu2.11 (CLI) (gebaut: 22. Februar 2023 22:56:18) (NTS)

PHP -Umschaltung im System erfolgt mit dem Befehl

sudo update-alternatives --config php

Es gibt 3 Optionen für die PHP -Alternative (bietet/usr/bin/PHP).

Auswahlpfad Vorzustand ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- * 0 /usr/bin/php.default 100 Automatischer Modus 1 /usr/bin/php.default 100 ручной режим 2 /usr/bin/php7.4 74 ручной режим 3 /usr/bin/php8.1 81 ручной режим Klicken Sie auf "Eingeben", um die aktuelle Auswahl [*] nicht zu ändern, oder geben Sie die richtige Nummer ein: Beim Drücken von 2 wechselt der PHP -Interpreter auf Version 7.4. php --version PHP 7.4.33 (CLI) (gebaut: 8. Juni 2023 15:23:32) (NTS) Eine andere Möglichkeit, PHP -Befehle zu wechseln: ** 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 Wechseln Sie zum Apache2 -Webserver ! Ergänzung von 07.2023: ** PHP 7.4 -Modul für Apache2 muss im Voraus installiert werden: ** 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 ### Prüfung Erstellen Sie die einfachste Datei test.php und öffnen Sie sie aus der Zielzeile des Browsers vom Webserver: Beim Öffnen der URL sollte die Funktion phpinfo () erhalten werden. In der Zeile "Konfigurationsdatei (php.ini) Pfad" in der Php.ini -Datei wird die aktuelle Version des vom Interpreter verwendeten PHP -Version beispielsweise 7.4 angezeigt. ### Fastcgi -Abschaltung Das Vorhandensein einer vernachlässigten FPM -Modulversion des PHP 8.1 kann durch einen Befehl aus der Konsole überprüft werden: sudo systemctl status php8.1-fpm In meinem Fall wird FPM gestartet und verwendet PHP 8.1 (ignoriert die Version des Php7.4 -Moduls in Apache2):
 php8.1 -fpm.Service - Der PHP 8.1 FASTCGI -Prozessmanager
     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"   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""
Bei Verwendung von FastCGI (PHP-FPM) ist die Verwendung einer fehlerhaften Version 8.1 mit dem Befehl ** sichtbar`echo phpinfo()`**;. Um die Version 7.4 zu erstellen, habe ich das PHP-FPM-Modul auf dem Apache2-Testserver ausgeschaltet: Befehl: sudo a2dismod actions alias proxy_fcgi setenvif Dann bestätigte die Abschaltung: "Ja, tun Sie, was ich sage!" Fertigstellung des Apache2 -Server -Neustarts: sudo systemctl restart apache2 Jetzt zeigt Phpinfo () die Version, die ich benötige - 7.4 (anstelle von 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` --- _ Letzte Änderung: 02.06.2025: Ersatz GPG -Export -Armor 4F4EA0AAE5267A6C | Sudo apt -key add - auf gpg --export 4f4ea0aae5267a6c | Sudo tee /tc/apt/trusted.gpg.d/php_ondrej.gpg>/dev/null _


Verwandte Veröffentlichungen