Installare PHP 7.2 su Debian Stretch: differenze tra le versioni

m
compatibilità per Stretch
m (compatibilità per Stretch)
 
(7 versioni intermedie di un altro utente non mostrate)
Riga 1: Riga 1:
{{Versioni compatibili|Stretch}}
{{Versioni compatibili|ONLY|Stretch}}
== Introduzione ==
== Introduzione ==
La versione di PHP che viene distribuita con Debian Stretch è la 7.0, che però è ufficialmente uscita di supporto nel Dicembre 2018.
La versione di PHP che viene distribuita con Debian Stretch è la 7.0, che però è ufficialmente uscita di supporto nel Dicembre 2018.
Riga 47: Riga 47:
Come ultimo passaggio, disabilitiamo PHP 7.0 in Apache e abilitiamo il 7.2:
Come ultimo passaggio, disabilitiamo PHP 7.0 in Apache e abilitiamo il 7.2:
<pre>
<pre>
# a2dismod php 7.0
# a2dismod php7.0
# a2enmod php7.2
# a2enmod php7.2
# systemctl restart apache2
# systemctl restart apache2
</pre>
</pre>
== Il Problema mcrypt ==
Il modulo ''mcrypt'' è stato incluso in PHP 5.4 fino alla versione PHP 7.1. E' stato successivamente rimosso da PHP 7.2 e spostato in un'estensione PECL non ufficiale perchè la libreria ''mcrypt'' non è più sviluppata. PHP 7.2 e successivi usano di default la libreria ''libsodium'' come libreria di crittografia.
E' però possibile che alcune applicazioni PHP abbiano ancora bisogno della libreria ''mcrypt''; se questo è il nostro caso, occorre compilarla a mano.
Installiamo prima di tutto alcuni strumenti di compilazione:
<pre>
# apt install gcc make autoconf libc-dev pkg-config
# apt install libmcrypt-dev
# pecl install --nodeps mcrypt-snapshot
</pre>
Alla domanda:
<pre>
libmcrypt prefix? [autodetect] :
</pre>
premiamo Invio e lanciamo l'autodetect. Durante il processo di compilazione e installazione vedremo qualcosa di simile:
<pre>
...
Build process completed successfully
Installing '/usr/lib/php/20170718/mcrypt.so'    ---->  this is our path to mcrypt extension lib
install ok: channel://pecl.php.net/mcrypt-1.0.1
configuration option "php_ini" is not set to php.ini location
You should add "extension=mcrypt.so" to php.ini
</pre>
Al termine, come suggerito dal processo di installazione, modifichiamo i file di configurazione di PHP 7.2 e di Apache:
<pre>
# nano /etc/php/7.2/cli/php.ini
</pre>
<pre>
# nano /etc/php/7.2/apache2/php.ini
</pre>
aggiungendo la riga:
<pre>
extension=mcrypt.so
</pre>
all'inizio del file, sotto la dicitura [PHP].
Infine verifichiamo il corretto funzionamento della libreria:
<pre>
# php -i | grep "mcrypt"
</pre>
che avrà come output:
<pre>
/etc/php/7.2/cli/conf.d/mcrypt.ini
Registered Stream Filters => zlib.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, convert.iconv.*, mcrypt.*, mdecrypt.*
mcrypt
mcrypt support => enabled
mcrypt_filter support => enabled
mcrypt.algorithms_dir => no value => no value
mcrypt.modes_dir => no value => no value
</pre>
== phpMyAdmin ==
La versione di Stretch del pacchetto phpMyAdmin non è totalmente compatibile con PHP 7.2 e genera degli errori non bloccanti quando si visualizzano i record di un qualsiasi database.
Per risolvere è sufficiente scaricare una versione più aggiornata di phpMyAdmin:
<pre>
# wget http://ftp.ch.debian.org/debian/pool/main/p/phpmyadmin/phpmyadmin_4.6.6-5_all.deb
# dpkg -i phpmyadmin_4.6.6-5_all.deb
</pre>
Il pacchetto non ha dipendenze.
== Versioni diverse di PHP per diversi Virtual Host ==
Potrebbe capitare che ci siano alcuni siti o applicazioni che richiedono una certa versione specifica di PHP e che non possono essere passati sull'ultima versione installata.
<br/>
In questo caso possiamo agire sui file di configurazione dei singoli virtual host e impostare una direttiva specifica.
<br/>
Installiamo innanzitutto i moduli di collegamento tra le librerie PHP FPM e FastCGI;
<pre>
# a2enmod actions fcgid alias proxy_fcgi
</pre>
Quindi andiamo ad agire sui file di configurazione dei virtual host.
=== Virtual Host con PHP 5.6 ===
Aggiungiamo la seguente direttiva prima della chiusura del file:
<pre>
    # IMPOSTO PHP 5.6 COME PREDEFINITO
    ####################################
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost/"
    </FilesMatch>
    # FINE IMPOSTAZIONE
</VirtualHost>
</pre>
=== Virtual Host con PHP 7.2 ===
Aggiungiamo la seguente direttiva prima della chiusura del file:
<pre>
    # IMPOSTO PHP 7.2 COME PREDEFINITO
    ####################################
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/"
    </FilesMatch>
    # FINE IMPOSTAZIONE
</VirtualHost>
</pre>
{{Autori
|Autore = [[Utente:Ferdybassi|Ferdybassi]]
}}
[[Categoria:Web server]]
[[Categoria:Database server]]
[[Categoria:PHP]]
3 581

contributi