Nei sistemi Linux RHEL 8 / CentOS 8, il modo in cui è organizzato il software è cambiato:i pacchetti critici sono ora contenuti in BaseOs
repository, mentre AppStream
uno contiene più versioni di alcune delle applicazioni e dei linguaggi di programmazione più comuni utilizzati che sono organizzati in moduli e aggiornati indipendentemente dal ciclo di rilascio della distribuzione. Questa strategia è stata adottata per evitare il problema di rimanere bloccati con una certa versione, troppo obsoleta o troppo recente di un determinato software.
In questo tutorial imparerai:
- Come installare PHP su RHEL 8 / CentOS 8
- Cosa sono i moduli software in RHEL 8 / CentOS 8
- Come installare e passare da una versione all'altra del modulo PHP

Requisiti e convenzioni software utilizzati
Categoria | Requisiti, convenzioni o versione del software utilizzata |
---|---|
Sistema | RHEL 8 / CentOS 8 |
Software | Non è necessario alcun software aggiuntivo per seguire questo tutorial |
Altro | Autorizzazione a eseguire il comando con privilegi di root. |
Convenzioni | # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo comando$ – richiede che i comandi linux dati vengano eseguiti come un normale utente non privilegiato |
Cos'è PHP?
PHP (PHP:Hypertext Preprocessor) non ha bisogno di molte presentazioni:questo linguaggio di programmazione generico è stato originariamente creato nel 1994 da Rasmus Lerdorf ed è rilasciato sotto licenza PHP, come software open source. Il suo principale campo di applicazione è il web, ma il linguaggio può essere utilizzato in altri contesti. RHEL 8 / CentOS 8 viene fornito con due repository principali abilitati:BaseOs
e AppStream
.
Il primo contiene i pacchetti
core della distribuzione che segue il ciclo di vita delle distribuzioni stesse; il secondo contiene diverse versioni di diverse applicazioni userspace, che vengono aggiornate indipendentemente dalla distribuzione principale. Il software contenuto in quest'ultimo è organizzato in modules
. Ogni modulo fornisce diverse versioni di un'applicazione che consente di passare da quelle disponibili (ma non di installarle contemporaneamente). In questo tutorial vedremo com'è facile installare PHP e passare da una versione all'altra di questo linguaggio sulle distribuzioni RHEL 8 / CentOS 8.
Quale versione di PHP?
Mentre la versione 5.6 di PHP è ora ufficialmente morta (ha raggiunto EOL il 1 gennaio 2019), sono attualmente mantenuti tre rami del linguaggio di programmazione:7.1
, che in realtà riceve solo correzioni di sicurezza e sarà aggiornato fino al 1° dicembre 2019, e versioni 7.2
e 7.3
, che saranno supportati rispettivamente fino al 30 novembre 2020 e al 6 dicembre 2021.
La versione di PHP fornita per impostazione predefinita in RHEL 8 / CentOS 8, da AppStream
il repository è 7.2.11
, come possiamo verificare eseguendo dnf info php
comando, che restituisce il seguente output:
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.
Sono disponibili altre versioni di PHP in AppStream
deposito?. Per rispondere a questa domanda possiamo eseguire un sottocomando dedicato di dnf, module
e chiedere informazioni sul modulo PHP, utilizzando l'list
azione:
$ 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
Quando si esegue l'dnf module list
comando, per impostazione predefinita, vengono visualizzati tutti i moduli disponibili. Per limitare la query a un solo modulo specifico, forniamo il nome del modulo al comando. In questo caso possiamo vedere che esistono due flussi per il modulo PHP, che coprono le versioni 7.1
e 7.2
della lingua e delle relative biblioteche. Come abbiamo visto, quest'ultima versione è quella che viene installata di default:nell'output del comando che eseguiamo sopra questo è evidenziato dall'uso del [d]
segno nella seconda colonna, che, come specificato nella legenda, sta per default
.
Un'altra parte interessante dell'output sono i Profiles
colonna, in cui sono riportati i profili disponibili per un flusso. È possibile installare più profili contemporaneamente e ognuno di essi comprende un diverso insieme di pacchetti. Il [d]
la notazione viene utilizzata anche qui per contrassegnare il profilo predefinito selezionato durante l'installazione dello stream.
Per installare il pacchetto di un flusso specifico di un modulo software dobbiamo usare il name:stream/profile
notazione. Ad esempio, per installare la versione 7.1
di PHP, possiamo eseguire:
$ sudo dnf module install php:7.1/default
In questo caso avremmo potuto omettere il nome del profilo, poiché default
viene utilizzato automaticamente se non ne viene specificato un altro. Se utilizziamo lo stesso comando che abbiamo eseguito sopra, ora possiamo vedere che il 7.1
lo stream è contrassegnato da [e]
, che sta per abilitato, e il default
il profilo dello stream è contrassegnato da [i]
, che indica che il profilo del flusso è installato:
$ 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
Se abbiamo uno stream installato e vogliamo passare a un altro di quelli disponibili, possiamo semplicemente installare quest'ultimo:i pacchetti verranno aggiornati o declassati automaticamente, a seconda della situazione. Per passare al 7.2
stream, ad esempio, eseguiremmo:
$ 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
Allo stesso modo, se vogliamo rimuovere un flusso di moduli specifico, possiamo usare remove
azione invece di quella “installa”. Questo provoca la rimozione di un flusso:se specifichiamo un profilo, vengono rimossi solo i pacchetti appartenenti a quel profilo, altrimenti tutti i profili di un flusso sono interessati dall'azione. Ad esempio, per disinstallare tutti i pacchetti appartenenti a tutti i profili del 7.2
stream, eseguiremmo semplicemente:
$ sudo dnf module remove php:7.2
Per rimuovere solo i pacchetti relativi a devel
profilo dello stesso stream, invece, eseguiremmo:
$ sudo dnf module remove php:7.2/devel
Conclusioni
La nuova versione di Red Hat Enterprise Linux, arriva con un cambiamento nel modo in cui il software è organizzato. I BaseOs
repository contiene i pacchetti che rappresentano il nucleo delle distribuzioni e seguono il suo ciclo di rilascio, AppStream
uno invece, contiene software userspace organizzato in moduli che forniscono diverse versioni, o “stream” disponibili per essere installati:anche PHP è fornito in questo modo.
Le versioni di PHP disponibili per
default in RHEL 8 / CentOS 8 sono 7.1.20
e 7.2.11
. È possibile installare altre versioni del linguaggio di programmazione da repository esterni, come Remi, ma consiglio di attenersi ai sorgenti software predefiniti se non è strettamente necessario fare altrimenti.