[Risolto] ancora problemi con intl e ICU

Installazione, configurazione e uso di Ubuntu come server: web, ftp, mail, news, proxy, dns, ecc.

[Risolto] ancora problemi con intl e ICU

Messaggioda Hosting80 » domenica 10 febbraio 2019, 12:48

ciao a tutti. purtroppo mi ritrovo ancora con dei problemi con l'aggiornamento del componenti icu della estensione intl.

non capisco se il problema sta nella compilazione o nella impostazione delle variabili di ambiente.

All'inizio pensavo fosse un problema di repository ma non e così.

Ho le stesso problema sulle versioni php7-7.1-7.2 e 7.3 ma quello che si trova in giro per la compilazione a parte i siti uffciali dicono tutti la stessa cosa ma alla luce dei fatti non corrisponde al vero.

La versione icu della estensione intl attuale installata tramite il comando apt-install php7.x-intl e la 60.2 per tutte le versioni di php, a me occore la 62 se la 63 e meglio.

procedura eseguita.

1 disinstallata la vecchia versione intl.

2 installato il pacchetto php7.x-dev per g++ e make

3. scaricato la versione icu 63.1 dall'archivio ufficiale del progetto.

4. lancio la configurazione con i comandi : ./configure --prefix=/opt/icu63 && make && make install

Tutto procede senza errori.

5. scaricato il pacchetto php-src da github

6. lanciato il comando git checkout php-7.1.26 (o versione php corrispondente)

7. mi posiziono sulla cartella ext/intl

8. lancio il comando phpize

9.lancio i comandi ./configure --with-php-config=/usr/bin/php-config --with-icu-dir=/opt/icu63 e succesivamente make e make install per installare la estensione intl.so nella cartella apposita.

10. creo un file ini (intl.ini) con l'istuzione "extension=intl.so"

11. riavvio apache e php non ne vuole sapere di caricare l'estensione

a questo punto sto compilando male oppure mi sto perdendo qualche comando per strata.

E chiaro che e un mio errore perchè su ubuntu 16,17,18,18.10 accade lo stesso con repository o senza.

Le informazioni a riguardo sono sparpagliate ognuno a la sua idea e a risolto sul proprio unico server o pc ma io lo devo fare su 12 server!.....non e che posso andare a tentoni con i server in produzione fino a quando

non azzecco la procedura, anche perchè non vado a tentoni, i siti ufficiali di lib icu danno le stesse indicazioni ma di fatto non capisco cosa sbaglio.

Lo script automatizzato preso da qui fa la stessa cosa in automatico o quasi ma di fatto il risutato e lo stesso.

Tutti dicono che su debian 8-9 risulti funzionare non vedo quale sia la differenza su ubuntu e non e che ora mi metto a smantellare 12 server per una cosa simile.

Se qualcuno più esperto o pratico mi dice per cortesia dove sto sbagliando sarei grato.

buona domenica a tutti.
Ultima modifica di trekfan1 il lunedì 11 febbraio 2019, 6:34, modificato 2 volte in totale.
Motivazione: Il [Risolto] va messo preferibilmente ad inizio titolo, ricordalo per il futuro evitando il tutto maiuscolo
Hosting80
Prode Principiante
 
Messaggi: 46
Iscrizione: agosto 2016
Sesso: Maschile

Re: ancora problemi con intl e ICU

Messaggioda Hosting80 » domenica 10 febbraio 2019, 13:59

Ho fatto qualche progresso.

Il manuale di php dice in caso di compilazione differente da pecl e necessario aggiungere una variabile di ambiente per php e così ho fatto

quindi nel mio caso ho inserito export LD_LIBRARY_PATH="/opt/icu63/lib/"

ora si iniza a vedere qualche risultato ma non ci siamo ancora.

se da linea di comando digito php -m in elenco ottengo finalmente l'estensione intl

Codice: Seleziona tutto
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
intl
json
libxml
mbstring
mcrypt
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib

[Zend Modules]
Zend OPcache

e fin qua ci si siamo

ora se digito da terminale php -r 'phpinfo();' e ivio ottengo

Codice: Seleziona tutto
intl

Internationalization support => enabled
version => 1.1.0
ICU version => 63.1
ICU Data version => 63.1

non posto ovviamente tutto l'elenco...quindi int e abilitata ma se creo un file php con dentro la stessa istruzione per apache2 non eiste!

quindi ho fatto un passo avanti ma ancora non ci siamo!....
Ultima modifica di trekfan1 il lunedì 11 febbraio 2019, 6:35, modificato 2 volte in totale.
Motivazione: Inseriti i tag CODE, ricordalo per il futuro
Hosting80
Prode Principiante
 
Messaggi: 46
Iscrizione: agosto 2016
Sesso: Maschile

Re: ancora problemi con intl e ICU[RISOLTO]

Messaggioda Hosting80 » domenica 10 febbraio 2019, 23:16

Se ce una cosa che non sopporto sono le persone che credono di sapere tutto, e quando sei in difficoltà vedono in te una debolezza, ti sfottono perchè credono di avere il segreto di stato e la risposta è sempre la stessa,"te lo faccio io che lo so fare" oppure ti danno spezzoni di soluzioni e ce gente che prega e il sapientone gode in questo!

Ora e evidente che non e un modo fare e io sono sempre stato un pro condivisione, però davvero questa cosa mi fa imbestialire a dir poco e il concetto di condivisione va a quel paese.
Che poi non e che si cerca di trovare una soluzione per tutti, NO, ovviamente si trova per se stessi, quello risolve e nessuno sa che configurazione ha nel suo ambiente o server e puntualmente non funziona, oppure li riesce di culo e subito a postare il blog con la risposta, sicuramente cosa buona, peccato che funzionerà sul suo ambiente di sviluppo non quello degli altri e non avrà riprovato a farlo più volte.

Come spiegato io ho 12 server sparsi in produzione con diverse configurazioni, tutti basati su ubuntu server debian, e di certo non mi metto a smanettare su un server in produzione e questa configurazione mi occorre, me la richiedono e non posso dire di no.

la procedura che sto per postare lo testata più volte su php version 7.0-7.1.x-7.2.x su ubuntu server 16-17-18.04 bionic x64 anche in presenza di repository.

1. se è installato il componente intl disinstallatelo.

La cosa migliore dopo alcuni test fatti per maggiore attabilità di ogni ambiente e compilare ICU e intl da zero attraveso g++ e make

2. g++ e make lo troviamo in un unico pacchetto installando dev nella versione php corrispondente
Codice: Seleziona tutto
apt install php7.x-dev


3. Per chi non lo sa la versione icu installabile dal apt-get e la 60.2, nel mio caso mi occore la 62.1 ma per non dover intervenire nuovamente per un po di tempo io ho scelto la 63.1 che possiamo scaricare dal sito ufficiale per progetto icu con il nome icu4c-63_1-src.tgz.

E importante che qualsiasi versione scegliete per sia il pacchetto src

4. Dopo aver scaricato e scompattato nella cartella tmp e necessario applicare diritti di scrittura ricorsivi con
Codice: Seleziona tutto
chmod -R 755 nome cartella


5. Posizioniamoci su cd/nomecartella/source

6. digitiamo il comando
Codice: Seleziona tutto
./configure --prefix=/usr/local
verificando che non si presentino errori, se dovesse capitare allora i permessi non sono stati assegnati correttamente.

7. l'operazione di make per la compilazione non va fatta "tutta di un fiato" come tutti fanno ma prima lanciare
Codice: Seleziona tutto
make CXXFLAGS="-std=c++11"
e poi
Codice: Seleziona tutto
make install


8. adesso e indispensabile avere a versione src di php corrispondente alla vostra, si può fare anche con git ma io ho preferito un'altra strada, quindi otteniamo la nostra versione digitando
Codice: Seleziona tutto
php-v
e scarichiamo la versione src di php da qui attraversio l'opzione "branch-master" posta sulla sinistra.

9. Impostare nella cartella php7.x.x.xx-src. permessi ricorsivi sempre con
Codice: Seleziona tutto
chmod -R 755 cartella
e posizionarsi su
Codice: Seleziona tutto
cd/php7.xx.xx/ext/intl


10. digitare il comando
Codice: Seleziona tutto
phpize


11. digitare il comando
Codice: Seleziona tutto
./configure --with-php-config=/usr/bin/php-config --with-icu-dir=/usr/local
verificando che non ci siano errori.

12. compilare intl con il comando
Codice: Seleziona tutto
make CXXFLAGS="-g -std=c++11"
, al termine digitare
Codice: Seleziona tutto
make install


Ricordo che la procedura non deve presentare errori altrimenti intl non sarà caricato da apache o riconosciuto da php

13. ora va creato il file intl.ini dentro il percorso cd/etc/php/7.x/mods-available e al suo interno compilare il file con la riga
Codice: Seleziona tutto
extension=intl.so


14. digitare il comando
Codice: Seleziona tutto
phpenmod intl
in questo modo creiamo i vari collegamenti per cli,apache ecc.

15. php specifica che in caso di installazione diversa da pecl di intl occorre indicare una nuova variabile di ambiente per il nuovo componente a finchè php possa trovare il percorso corrispondente.
Quindi digitiamo il comando
Codice: Seleziona tutto
export LD_LIBRARY_PATH=/usr/local/lib


16. per ultimo ci servono delle librerie aggiuntive per far si che intl compilato con g++ sia interpretabile anche da apache installando il pacchetto
Codice: Seleziona tutto
apt install libicu-dev


17. riavviare apache e la vostra icu sarà aggiornata alla versione scelta!

E imperativo eseguire alla lettera questi passaggi altrimenti la procedura non funzionerà.

Non ci sono smanettamenti da fare non ci sono prove e non ci sono soluzioni "prova a far questo o prova cosi" senza mai averlo provato!

Buon icu a tutti e al "collega" in altro forum che ha fatto l'idiota sappia che il suo non e più un segreto!.....
Hosting80
Prode Principiante
 
Messaggi: 46
Iscrizione: agosto 2016
Sesso: Maschile


Torna a Ubuntu su server

Chi c’è in linea

Visualizzano questa sezione: 0 utenti registrati e 4 ospiti