3 581
contributi
Nessun oggetto della modifica |
m (compatibilità per Stretch) |
||
(9 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 39: | Riga 39: | ||
# apt install php7.2 php7.2-cli php7.2-common php7.2-json php7.2-opcache php7.2-mysql php7.2-zip php7.2-fpm php7.2-mbstring | # apt install php7.2 php7.2-cli php7.2-common php7.2-json php7.2-opcache php7.2-mysql php7.2-zip php7.2-fpm php7.2-mbstring | ||
</pre> | </pre> | ||
Una lista completa dei moduli disponibili è la seguente: | |||
<pre> | |||
php-amqp php-apcu php-apcu-bc php-gearman php-geoip php-gnupg php-igbinary php-imagick php-libsodium php-mailparse php-memcache php-memcached php-mongodb php-msgpack php-oauth php-http php-pinba php-propro php-radius php-raphf php-redis php-rrd php-smbclient php-solr php-ssh2 php-stomp php-uploadprogress php-uuid php-yaml php-zmq libapache2-mod-php7.2 libphp7.2-embed php7.2 php7.2-bcmath php7.2-bz2 php7.2-cgi php7.2-cli php7.2-common php7.2-curl php7.2-dba php7.2-dev php7.2-enchant php7.2-fpm php7.2-gd php7.2-gmp php7.2-imap php7.2-interbase php7.2-intl php7.2-json php7.2-ldap php7.2-mbstring php7.2-mysql php7.2-odbc php7.2-opcache php7.2-pgsql php7.2-phpdbg php7.2-pspell php7.2-readline php7.2-recode php7.2-snmp php7.2-soap php7.2-sqlite3 php7.2-sybase php7.2-tidy php7.2-xml php7.2-xmlrpc php7.2-xsl php7.2-zip php-remctl php-tideways php-xdebug libapache2-mod-php7.2-dbgsym libphp7.2-embed-dbgsym php-ds php-lua php-phalcon php-sodium php7.2-bcmath-dbgsym php7.2-bz2-dbgsym php7.2-cgi-dbgsym php7.2-cli-dbgsym php7.2-common-dbgsym php7.2-curl-dbgsym php7.2-dba-dbgsym php7.2-enchant-dbgsym php7.2-fpm-dbgsym php7.2-gd-dbgsym php7.2-gmp-dbgsym php7.2-imap-dbgsym php7.2-interbase-dbgsym php7.2-intl-dbgsym php7.2-json-dbgsym php7.2-ldap-dbgsym php7.2-mbstring-dbgsym php7.2-mysql-dbgsym php7.2-odbc-dbgsym php7.2-opcache-dbgsym php7.2-pgsql-dbgsym php7.2-phpdbg-dbgsym php7.2-pspell-dbgsym php7.2-readline-dbgsym php7.2-recode-dbgsym php7.2-snmp-dbgsym php7.2-soap-dbgsym php7.2-sqlite3-dbgsym php7.2-sybase-dbgsym php7.2-tidy-dbgsym php7.2-xml-dbgsym php7.2-xmlrpc-dbgsym php7.2-zip-dbgsym php-libsodium | |||
</pre> | |||
== Abilitazione di PHP 7.2 in Apache == | |||
Come ultimo passaggio, disabilitiamo PHP 7.0 in Apache e abilitiamo il 7.2: | |||
<pre> | |||
# a2dismod php7.0 | |||
# a2enmod php7.2 | |||
# systemctl restart apache2 | |||
</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