Website-Suche

So installieren Sie PHP unter RHEL 8/CentOS 8 Linux


In den RHEL 8/CentOS 8 Linux-Systemen hat sich die Art und Weise geändert, wie Software organisiert ist: Kritische Pakete sind jetzt im BaseOs-Repository enthalten, während das AppStream-Repository mehrere Versionen einiger der am häufigsten verwendeten Anwendungen und Programmiersprachen enthält, die in Modulen organisiert sind und unabhängig vom Veröffentlichungszyklus der Distribution aktualisiert werden. Diese Strategie wurde gewählt, um das Problem zu vermeiden, mit einer bestimmten, zu veralteten oder zu neuen Version einer bestimmten Software stecken zu bleiben.

In diesem Tutorial lernen Sie:

  • So installieren Sie PHP auf RHEL 8/CentOS 8
  • Was sind Softwaremodule in RHEL 8/CentOS 8?
  • Wie man verschiedene Versionen des PHP-Moduls installiert und zwischen ihnen wechselt

Verfügbare PHP-Module unter RHEL 8

Verwendete Softwareanforderungen und Konventionen

Was ist PHP?

PHP (PHP: Hypertext Preprocessor) braucht nicht viele Präsentationen: Diese universelle Programmiersprache wurde ursprünglich 1994 von Rasmus Lerdorf entwickelt und wird unter der PHP-Lizenz als Open-Source-Software veröffentlicht. Das Hauptanwendungsgebiet ist das Web, aber die Sprache kann auch in anderen Kontexten verwendet werden. RHEL 8/CentOS 8 wird mit zwei aktivierten Hauptrepositorys geliefert: BaseOs und AppStream.

Das erste enthält die Pakete core
der Distribution, die dem Lebenszyklus der Distributionen selbst folgt; Die zweite enthält verschiedene Versionen mehrerer Userspace-Anwendungen, die unabhängig von der Hauptdistribution aktualisiert werden. Die in letzterem enthaltene Software ist in Modulen organisiert. Jedes Modul stellt verschiedene Versionen einer Anwendung zur Verfügung, die es ermöglichen, zwischen den verfügbaren zu wechseln (aber nicht gleichzeitig zu installieren). In diesem Tutorial werden wir sehen, wie einfach es ist, PHP zu installieren und zwischen verschiedenen Versionen dieser Sprache auf den RHEL 8/CentOS 8-Distributionen zu wechseln.

Welche PHP-Version?

Während die Version 5.6 von PHP nun offiziell tot ist (sie erreichte am 1. Januar 2019 das EOL-System), werden derzeit drei Zweige der Programmiersprache gepflegt: 7.1, die eigentlich nur Sicherheitsfixes erhält und bis zum 1. Dezember 2019 gepatcht wird, und die Versionen 7.2 und 7.3, die bis zum 30. November 2020 bzw. 6. Dezember 2021 unterstützt werden.

Die Version von PHP, die standardmäßig in RHEL 8/CentOS 8 aus dem AppStream-Repository bereitgestellt wird, ist 7.2.11, wie wir durch Ausführen des php-Befehls dnf info überprüfen können, der die folgende Ausgabe zurückgibt:

Available Packages
Name         : php
Version      : 7.2.11
Release      : 1.el8+2002+9409c40c
Arch         : x86_64
Size         : 1.5 M
Source       : php-7.2.11-1.el8+2002+9409c40c.src.rpm
Repo         : rhel-8-for-x86_64-appstream-beta-rpms
Summary      : PHP scripting language for creating dynamic web sites
URL          : http://www.php.net/
License      : PHP and Zend and BSD and MIT and ASL 1.0
Description  : PHP is an HTML-embedded scripting language. PHP attempts to make it
             : easy for developers to write dynamically generated web pages. PHP also
             : offers built-in database integration for several commercial and
             : non-commercial database management systems, so writing a
             : database-enabled webpage with PHP is fairly simple. The most common
             : use of PHP coding is probably as a replacement for CGI scripts.
             :
             : The php package contains the module (often referred to as mod_php)
             : which adds support for the PHP language to Apache HTTP Server.

Gibt es andere PHP-Versionen im AppStream-Repository? Um diese Frage zu beantworten, können wir einen dedizierten Unterbefehl von dnf, module ausführen und Informationen über das PHP-Modul abfragen, indem wir die Aktion list verwenden:

sudo dnf module list php
Red Hat Enterprise Linux 8 for x86_64 - AppStream Beta (RPMs)
Name                       Stream                        Profiles                                          Summary
php                        7.1                           devel, minimal, default [d]                       PHP scripting language
php                        7.2 [d]                       devel, minimal, default [d]                       PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Beim Ausführen des Befehls dnf module list werden standardmäßig alle verfügbaren Module angezeigt. Um die Abfrage auf ein bestimmtes Modul zu beschränken, geben wir den Modulnamen für den Befehl an. In diesem Fall können wir sehen, dass es zwei Streams für das PHP-Modul gibt, die die Versionen 7.1 und 7.2 der Sprache und die zugehörigen Bibliotheken abdecken. Wie wir gesehen haben, ist die letztere Version diejenige, die standardmäßig installiert wird: In der Ausgabe des Befehls, den wir oben ausführen, wird dies durch die Verwendung der Markierung [d] in der zweiten Spalte hervorgehoben, die, wie in der Legende angegeben, für default steht.

Ein weiterer interessanter Teil der Ausgabe ist die Spalte Profile, in der die verfügbaren Profile für einen Stream gemeldet werden. Es können mehrere Profile gleichzeitig installiert werden, und jedes von ihnen umfasst einen anderen Satz von Paketen. Die Notation [d] wird auch hier verwendet, um das Standardprofil zu markieren, das bei der Installation des Streams ausgewählt wurde.

Um das Paket eines bestimmten Streams eines Softwaremoduls zu installieren, müssen wir die Notation name:stream/profile verwenden. Um beispielsweise die Version 7.1 von PHP zu installieren, können wir Folgendes ausführen:

sudo dnf module install php:7.1/default

In diesem Fall hätten wir den Profilnamen weglassen können, da der Standardname automatisch verwendet wird, wenn kein anderer angegeben wird. Wenn wir den gleichen Befehl verwenden, den wir oben ausführen, können wir jetzt sehen, dass der 7.1-Stream mit [e] markiert ist, was für aktiviert steht, und das Standardprofil des Streams mit [i] markiert ist, was bedeutet, dass das Profil des Streams installiert ist:

sudo dnf module list php
Red Hat Enterprise Linux 8 for x86_64 - AppStream Beta (RPMs)
Name                      Stream                       Profiles                                             Summary
php                       7.1 [e]                      devel, minimal, default [d] [i]                      PHP scripting language
php                       7.2 [d]                      devel, minimal, default [d]                          PHP scripting language

Wenn wir einen Stream installiert haben und zu einem anderen verfügbaren wechseln möchten, können wir einfach letzteren installieren: Die Pakete werden je nach Situation automatisch aktualisiert oder downgegradet. Um zum Beispiel zum 7.2-Stream zu wechseln, würden wir Folgendes ausführen:

sudo dnf module install php:7.2/default
=======================================================================================================================================================
 Package                    Arch                 Version                                     Repository                                           Size
=======================================================================================================================================================
Upgrading:
 php-common                 x86_64               7.2.11-1.el8+2002+9409c40c                  rhel-8-for-x86_64-appstream-beta-rpms               653 k
 php-mbstring               x86_64               7.2.11-1.el8+2002+9409c40c                  rhel-8-for-x86_64-appstream-beta-rpms               580 k
 php-xml                    x86_64               7.2.11-1.el8+2002+9409c40c                  rhel-8-for-x86_64-appstream-beta-rpms               188 k
 php-fpm                    x86_64               7.2.11-1.el8+2002+9409c40c                  rhel-8-for-x86_64-appstream-beta-rpms               1.6 M
 php-json                   x86_64               7.2.11-1.el8+2002+9409c40c                  rhel-8-for-x86_64-appstream-beta-rpms                73 k
 php-cli                    x86_64               7.2.11-1.el8+2002+9409c40c                  rhel-8-for-x86_64-appstream-beta-rpms               3.1 M
Switching module streams:
 php                                             7.1 -> 7.2

Transaction Summary
=======================================================================================================================================================
Upgrade  6 Packages

Total download size: 6.2 M
Is this ok [y/N]: y

Wenn wir einen bestimmten Modulstream entfernen möchten, können wir in ähnlicher Weise die Aktion remove anstelle der Aktion "install" verwenden. Dies führt dazu, dass ein Stream entfernt wird: Wenn wir ein Profil angeben, werden nur die Pakete entfernt, die zu diesem Profil gehören, andernfalls sind alle Profile eines Streams von der Aktion interessiert. Um beispielsweise alle Pakete zu deinstallieren, die zu allen Profilen des 7.2-Streams gehören, würden wir einfach Folgendes ausführen:

sudo dnf module remove php:7.2

Um nur die Pakete zu entfernen, die sich auf das Devel-Profil desselben Streams beziehen, würden wir stattdessen Folgendes ausführen:

sudo dnf module remove php:7.2/devel

Schlüsse

Die neue Version von Red Hat Enterprise Linux bringt eine Änderung in der Art und Weise mit sich, wie Software organisiert ist. Das BaseOs-Repository enthält die Pakete, die den Kern der Distributionen darstellen, und folgt seinem Veröffentlichungszyklus, das AppStream-Repository hingegen enthält Userspace-Software, die in Modulen organisiert ist, die verschiedene Versionen oder "Streams" bereitstellen, die installiert werden können: PHP wird auch auf diese Weise bereitgestellt.

Die PHP-Versionen, die standardmäßig von
in RHEL 8/CentOS 8 verfügbar sind, sind 7.1.20 und 7.2.11. Es ist möglich, andere Versionen der Programmiersprache aus externen Repositories wie Remi zu installieren, aber ich empfehle, bei den Standard-Softwarequellen zu bleiben, wenn es nicht unbedingt notwendig ist, etwas anderes zu tun.

Verwandte Artikel: