L'uso di PHP 7.2 su un server dedicato Ubuntu è altamente raccomandato rispetto alle precedenti versioni di PHP per diversi motivi, primo fra tutti la sicurezza. Il supporto attivo per PHP 7.2 è valido fino al 30 novembre 2019 e il supporto per la sicurezza fino al 30 novembre 2020. Le versioni precedenti come 7.0 e qualsiasi altra versione 5.6 e precedenti non ricevono più alcun supporto e possono lasciare buchi di sicurezza aperti su un server se non vengono sostituiti . Un altro motivo principale per l'aggiornamento è il grande aumento delle prestazioni rispetto alle versioni precedenti quando PHP 7.2 è installato e si utilizza il modulo OPcache . Questo può ridurre notevolmente il tempo necessario per caricare la tua pagina web! Se stai sviluppando un sito in locale o lo stai avviando su uno dei server dedicati o VPS Ubuntu di Liquid Web, l'utilizzo di PHP 7.2 o versioni successive sarebbe la strada da percorrere.
Pre-volo:controlla l'ambiente del server
- Autorizzazioni corrette: Innanzitutto, assicurati di disporre delle autorizzazioni di root o sudo appropriate per poter gestire il sistema e le applicazioni sul server. Se hai accesso solo a un utente non root sul sistema, potresti dover ottenere più autorizzazioni dall'amministratore del server.
- Versioni PHP esistenti: Verifica la presenza di una versione esistente di PHP. Se hai selezionato lo stack LAMP predefinito durante la prima installazione dell'immagine Ubuntu sul server, il valore predefinito è PHP 7.0. Se hai utilizzato un'immagine diversa o hai eseguito un'installazione semplice, potresti non avere alcuna versione di PHP sul server. Per verificare la versione PHP accedi al terminale ed esegui:
user@test:~# php -v
PHP 7.0.30-0ubuntu0.16.04.1 (cli) ( NTS )
Se vedi una versione PHP precedente, dovrai installare la nuova versione e cambiare la versione a cui Apache si connette in un secondo momento. Se mostra "Comando php non trovato" allora non c'è nessuna versione PHP attualmente installata .
- Creazione di un backup rapido: Se disponi di una versione PHP esistente, potresti voler eseguire un backup di qualsiasi configurazione prima di eseguire l'aggiornamento nel caso in cui ci siano problemi (come se il codice del tuo sito non fosse compatibile) e sia necessario eseguire nuovamente il downgrade. Puoi controllare la directory di configurazione corrente eseguendo:
user@test:~# php --ini
Configuration File (php.ini) Path: /etc/php/7.0/cli
Loaded Configuration File: /etc/php/7.0/cli/php.ini
Scan for additional .ini files in: /etc/php/7.0/cli/conf.d
Questo mostra che le configurazioni sono tutte in /etc/php/7.0/ directory. Quindi, se vuoi fare un backup veloce, puoi eseguire un comando come:
user@test:~# sudo cp -a /etc/php/7.0/ /etc/php/7.0.backup
Inoltre, puoi salvare un elenco di moduli PHP esistenti eseguendo:
user@test:~# sudo cp -a /etc/php/7.0/ /etc/php/7.0.backup
Questo può aiutare quando si confrontano i moduli esistenti con i moduli in PHP 7.2.
Installazione di PHP 7.2
Il repository ufficiale per PHP su Ubuntu è di Ondřej Surý su launchpad. Per aggiungerlo al tuo sistema, devi eseguire il seguente comando:
user@test:~# sudo add-apt-repository ppa:ondrej/php
Premi invio quando te lo chiede. Ciò consente al tuo sistema di utilizzare il repository come fonte per il nuovo software. Il comando successivo prende l'elenco dei pacchetti software disponibili per il tuo sistema:
user@test:~# sudo apt-get update
Dopodiché puoi procedere con l'installazione:
user@test:~# sudo apt-get install php7.2
Dovrebbe mostrare diversi pacchetti che verranno installati e quanto spazio su disco verrà utilizzato. Quando ti viene richiesto, digita "Y ' e invialo. Dopo qualche istante l'installazione dovrebbe essere completa, controlla la versione PHP con:
user@test:~# php -v
PHP 7.2.13-1+ubuntu16.04.1+deb.sury.org+1
Ora dovrebbe mostrare PHP 7.2, ma ora è necessario configurare Apache per utilizzare la versione più recente.
Configurazione di Apache per l'utilizzo di PHP 7.2
Ubuntu 16.04 utilizza alcuni comandi diversi per aiutare a gestire i moduli Apache, quindi il modo in cui utilizza una versione specifica di PHP dipende dal modulo caricato. Puoi visualizzare l'elenco dei moduli disponibili eseguendo:
user@test:~# ls /etc/apache2/mods-available/php*
/etc/apache2/mods-available/php7.0.conf
/etc/apache2/mods-available/php7.0.load
/etc/apache2/mods-available/php7.2.conf
/etc/apache2/mods-available/php7.2.load
Potresti avere anche altri moduli, l'installazione dello stack LAMP predefinita avrebbe 7.0 e la nuova installazione 7.2 che abbiamo appena fatto, ma l'esecuzione del comando successivo mostra che 7.0 è ancora attivo:
user@test:~# ls /etc/apache2/mods-enabled/php*
/etc/apache2/mods-enabled/php7.0.conf
/etc/apache2/mods-enabled/php7.0.load
Per passare alla versione 7.2 più recente, disabilita prima la versione PHP precedente:
user@test:~# sudo a2dismod php7.0
Quindi abilita PHP 7.2:
user@test:~# sudo a2enmod php7.2
Prima di riavviare Apache, controlla la sintassi di configurazione di Apache eseguendo:
user@test:~# apachectl -t
Syntax OK
Se dice che la sintassi è OK, riavvia Apache:
user@test:~# sudo service apache2 restart
Verifica della versione PHP di Apache
Ora per controllare il tuo lavoro, esegui di nuovo il comando precedente per vedere quale modulo è caricato e dovrebbe mostrare la versione PHP 7.2:
user@test:~# ls /etc/apache2/mods-enabled/php*
/etc/apache2/mods-enabled/php7.2.conf
/etc/apache2/mods-enabled/php7.2.load
Se non vedi gli stessi risultati mostrati negli ultimi comandi, ricontrolla l'ortografia e la sintassi degli ultimi comandi e assicurati sudo è stato inserito se non sei in esecuzione come utente root.
Quindi per testarlo sul tuo sito, ti consigliamo di creare un file phpinfo che puoi visualizzare sul tuo dominio. Questo mostra la versione di PHP così come le informazioni sulle configurazioni correnti, le variabili e tutti i moduli aggiunti. Crea un nuovo .php file nella cartella home del tuo sito o nella radice dei documenti di Apache (/var/www/html per impostazione predefinita) e includi questo codice:
<?php phpinfo(); ?>
Quindi, se visiti la pagina nel browser, dovrebbe essere simile a questa:
Se avevi un sito già attivo e funzionante con la precedente versione di PHP, provalo ora e verifica se ci sono problemi. Se il tuo codice non è compatibile o mostra errori, puoi provare a diagnosticare ulteriormente o se hai bisogno di eseguire subito il backup del sito puoi eseguire nuovamente il downgrade della versione PHP eseguendo a2dismod e a2enmod comandi per disabilitare PHP 7.2 e quindi abilitare 7.0 o qualsiasi versione precedente che avevi sul server, quindi riavviare Apache.
Alcuni siti ora possono mostrare un errore che dice che un modulo è mancante e non può essere eseguito, oppure se stai sviluppando un nuovo sito e hai un elenco di moduli necessari, la sezione successiva può aiutarti ad aggiungere nuovi moduli.
Aggiunta di moduli a PHP 7.2
Il passaggio a PHP 7.2 non mantiene automaticamente tutti gli stessi moduli delle precedenti versioni di PHP. Se non è necessario confrontare l'elenco con una versione PHP precedente, per installare tutti i moduli di base necessari, digitare prima il comando di seguito. Ma non premere invio, se premi il TAB chiave due volte dovresti ottenere un elenco di moduli disponibili specifici per 7.2::
@test:~# sudo apt-get install php7.2[tab][tab]
Esempio di output: php7.2 php7.2-enchant php7.2-mbstring php7.2-snmp
php7.2-bcmath php7.2-fpm php7.2-mysql php7.2-soap
php7.2-bz2 php7.2-gd php7.2-odbc php7.2-sqlite3
php7.2-cgi php7.2-gmp php7.2-opcache php7.2-sybase
php7.2-cli php7.2-imap php7.2-pgsql php7.2-tidy
php7.2-common php7.2-interbase php7.2-phpdbg php7.2-xml
php7.2-curl php7.2-intl php7.2-pspell php7.2-xmlrpc
php7.2-dba php7.2-json php7.2-readline php7.2-xsl
php7.2-dev php7.2-ldap php7.2-recode php7.2-zip
Questo non è un elenco completo, quindi potrebbe essere necessario cercare come installare altri moduli di cui potresti aver bisogno. Puoi digitare i moduli che desideri e puoi aggiungerne più nello stesso comando di installazione, come:
user@test:~# sudo apt-get install php7.2-opcache php7.2-mbstring php-memcached
Se hai salvato l'elenco dei moduli da una versione precedente di PHP con il comando in precedenza nella guida, puoi salvare un elenco dei moduli in PHP 7.2 e confrontarli con la versione precedente. Corri:
php -m > /tmp/7.2.modulelist.txt
Quindi per confrontarlo con l'elenco creato in precedenza, esegui:
user@test:~# diff /tmp/7.0.modulelist.txt /tmp/7.2.modulelist.txt
15,16d14
< mysqli
< mysqlnd
21d18
< pdo_mysql
28d24
< soap
29a26
> sodium
Oppure, se desideri un modo più visivo per confrontare i due elenchi, esegui:
user@test:~# vimdiff /tmp/7.0.modulelist.txt /tmp/7.2.modulelist.txt
Che mostrerà una pagina come questa nel terminale:
In questo esempio, i vari moduli MySQL e soap vengono visualizzati nell'elenco dei moduli 7.0 a sinistra ma mancano dalla versione 7.2 a destra e il modulo sodio è su 7.2 ma non era su 7.0.
Quindi, per questo esempio, possiamo installare i moduli mancanti con:
user@test:~# sudo apt-get install php7.2-mysql php7.2-soap
Dopo l'installazione, possiamo salvare un elenco aggiornato di moduli e confrontarlo di nuovo:
user@test:~# php -m > /tmp/7.2.modulelist.updated.txt
diff /tmp/7.0.modulelist.txt /tmp/7.2.modulelist.updated.txt
29a30
> sodium
Solo il modulo sodio è diverso tra gli elenchi dei moduli, quindi ora è pronto per lo sviluppo! Si spera che questa guida abbia aiutato con il tuo aggiornamento a PHP 7.2! Se hai avuto problemi o hai bisogno di ulteriore aiuto con il tuo Liquid Web Ubuntu Server, informa il nostro team di supporto Linux!