Posto questa piccola guida per chi ha la necessità come me di compilare una nuova versione del componente intl di php con icu versione 69. o anche 68 con unbuntu server 20.04-20.10 e php 7.4
Ho messo a punto tale procedura perchè, avendo diversi server da gestire con prestashop installati, gli utenti e prestashop stesso richiede aggiornamenti continui e l'icu e una di queste.
Mentre scrivo la versione attuale e la 69.1, supportata dalla versione di prestashop 1.7.0 in poi.
La procedura deve essere eseguita passo passo, e installata su 30 server quindi collaudata.
Anche se collaudata cosiglio prima di eseguire dei test con una copia della vostra configurazione in simulazione, vmware,virtualbox oppure hyper-v non importa.
NOTA: Prima di procedere non mi assunmo nessuna responsabilità in caso di errori o altri problemi, non posso sapere cosa c'e nei vostri server e mi auguro che non lo fate con gli utenti online o server in produzione!
Quindi ricapitoliamo :
Compilazione di Icu versione 69.x 0 68.x
Ubuntu server 20.04-20-10
php 7.4.x
Operazione che deve essere eseguita da terminale con utente root.
Se avete già compilato il vostro compomentie icu e bene ripulire tutto compresi i pacchetti dev e gcc, rispetto alle versioni precedenti cambiano diverse cose.
Per iniziare ci occorre una nuova versione di icu che possiamo scaricare dal suo sito ufficiale https://icu.unicode.org/download in source code
E possibile operare da qualsiasi posizione ma io ho preferito la cartella "tmp"
quindi portiamoci sulla cartella tmp ed estraiamo il contenuto di icu.
Ci servono i privilegi giusti usiamo :
Codice: Seleziona tutto
chmod -R 755 "nome cartella"
Portiamoci sulla cartella icu di destinazione e nella sotto cartella "source"
Prima di lanciare la configurazione ci occorrono delle librerie G++ Aggiornate, almeno la versione 9.3
Rimuoviamo le attuali e installiamo le nuove con
Codice: Seleziona tutto
apt install -y build-essential
Codice: Seleziona tutto
./configure --prefix=/usr/local
Procediamo con
Codice: Seleziona tutto
make CXXFLAGS="-std=c++11"
Codice: Seleziona tutto
make install
Codice: Seleziona tutto
make CXXFLAGS="-std=c++11" && make install
Ora ci occorre sapere quale versione di php 7.4.x abbiamo installata, possiamo farlo con
Codice: Seleziona tutto
php --version
Prendiamo nota e scarichiamo la versione corrispondente a quella installata sul vostro server da qui https://github.com/php/php-src sempre nella cartella tmp.
Estraiamo il contenuto e diamo i permessi con
Codice: Seleziona tutto
chmod -R 755 php-src-PHP-7.4.x
Spostiamoci ora sulla cartella intl per la compilazione con :
Codice: Seleziona tutto
cd php-src-PHP-7.4.x/ext/intl
Codice: Seleziona tutto
apt install php7.4-dev
Codice: Seleziona tutto
phpize
Per lanciare la configurazione in ubuntu 20 ci occorren un'altra cosa, il pkg, che installiamo con :
Codice: Seleziona tutto
apt install -y pkg-config
Terminata l'installazione lanciamo la nostra configurazione con :
Codice: Seleziona tutto
./configure --with-php-config=/usr/bin/php-config
Prima di procedere controllate che il vostro timezone locale sia sincronizzato con il vostro paese, non sto a spiegare il motivo e lungo,noioso e complicato.
Controlliamo il nostro time zone con :
Codice: Seleziona tutto
timedatectl
Se dovesse risultare sballato sistemiamolo con :
Codice: Seleziona tutto
timedatectl set-timezone Europe/Rome
Ora passiamo alla complilazione del componente intl.so
digitiamo prima :
Codice: Seleziona tutto
make CFLAGS=-DU_DEFINE_FALSE_AND_TRUE=1
procediamo con :
Codice: Seleziona tutto
make CXXFLAGS=-DU_DEFINE_FALSE_AND_TRUE=1
Codice: Seleziona tutto
make install
Procediamo con :
Codice: Seleziona tutto
export LD_LIBRARY_PATH=/usr/local/lib
Ora prima di concludere ci occorre, se non è presente di inserire il file ini che andremo a compilare in questo modo
Nome file : intl.so
Contenuto : extension=intl.so
Salviamo e copiamo il file nel percorso "/etc/php/7.4/mods-available".
Se non ci sono stati errori, a parte quello citato, in teoria intl sarebbe installato e utilizzabile ma non da apache.
Per far si che apache lo veda e sia utilizzabile dal web ci occorre il pacchetto dev lib che installiamo con
Codice: Seleziona tutto
apt install libicu-dev
Per concludere creiamo i collegamenti necessari con :
Codice: Seleziona tutto
phpenmod intl
Codice: Seleziona tutto
service apache2 restart
Se la procedura è stata eseguita correttamente potremmo verificare il nostro icu aggiornato con il php info dal nostro browser
Spero di non violare nessuna regola, per chi avesse necessità di questo lavoro potete contattarmi sulla mia pagina
Codice: Seleziona tutto
https://www.facebook.com/prestashop2013
Un saluto.