3 581
contributi
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 | # 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]] |
contributi