Newsgroup: it.comp.www.php
Titolo: modulo Firebird/Interbase per php su Linux

Buongiorno a tutti.
 
Ho un Firebird 3.0.1 installato su Linux Ubuntu 16.04.1 LTS.
Se provo ad installare il modulo Firebird/Interbase per php:
 
   apt-get update;
   apt-get install php7.0-interbase;
   service apache2 restart;
 
alla richiesta di phpinfo() ottengo:
 
   Run-time Client Library Version: LI-V6.3.4.26856 Firebird 2.5
 
e le query non funzionano:
 
   Warning: ibase_connect(): connection rejected by remote interface in...  
ecc. ecc.
 
Come faccio a ottenere:
 
   Run-time Client Library Version: WI-V6.3.1.32609 Firebird 3.0
 
(Ho ricopiato la riga da una funzionante installazione su Windows).
 
Grazie.
 
-- 
Michele Giordano
parolescritte.it
 

   Run-time Client Library Version: LI-V6.3.4.26856 Firebird 2.5
 
OK, php7.0-interbase per motivi non chiari si porta dietro firebird2.5-common.
 
D'altra parte se lì c'è Firebird 3.0.1 c'è da sperare che da qualche parte una libfbclient.so.3.x
a cercare bene ci sia.
 
Quindi, in obbedienza ai sani principi di Vlad Tepes - che era voivoda di Valacchia, mica pizza e
fichi - io proverei (da root, perché i veri danni si fanno così):
 
    cd /usr/lib/x86_64-linux-gnu
    mv libfbclient.so.2.5.4 libfbclient.so.2.5.4.bak
    rm -f libfbclient.so.2.5
    rm -f libfbclient.so.2
    find / -name "libfbclient.so.3.*"
 
    # Diciamo che la trovi in /usr/local/firebird/lib/libfbclient.so.3.0.1
 
    cp /usr/local/firebird/lib/libfbclient.so.3.0.1 .
    ln libfbclient.so.3.0.1 libfbclient.so.2.5.4    # Questo perché sisammai ldconfig
    ln -s libfbclient.so.3.0.1 libfbclient.so.2.5
    ln -s libfbclient.so.2.5 libfbclient.so.2
 
e vedi che succede. Alla peggio, il file ".bak" è disponibile.
 
Leonardo
-- 
 
A terrible beauty is born.
                                     - W. B. Yeats, Easter 1916

 e vedi che succede. Alla peggio, il file ".bak" è disponibile.
 
Succede che funziona.
Ora tre cose:
 
1. GRAZIE
2. una curiosità: sei andato (quasi) a colpo sicuro perché hai avuto lo  
stesso problema usando Firebird+php, oppure sei bravo e basta?
3. mi spieghi che cosa ho fatto, di preciso, mentre vado a compulsare un  
manuale di comandi Linux?
 
 
-- 
Michele Giordano
parolescritte.it
 

 OK, php7.0-interbase per motivi non chiari si porta dietro firebird2.5-common.
 
Perché contiene file necessari ai client (le config), e in Ubuntu 16.04 
c'e firebase 2.5, non il 3.x
 
Probabilmente il 3.x è stato installato da un PPA esterno o direttamente 
dai pacchetti scaricati dal sito.
 
Linkare la libreria da 2.x a 3.x funziona a colpi di culo, ma non durerà 
per sempre. :D
 
E al primo aggiornamento di sicurezza da Ubuntu ti ritrovi la 3.x 
sovrascritta con la 2.x perché l'hai linkata.
 
La cosa giusta da fare in questo caso (a parte trovare una versione di 
PHP7 compilata per firebase 3) è compilarsi l'estensione di PHP a mano.
 
O usare la 2.x inclusa nella distro.
 
Bye.
 


 
D'accordo.
Ma siccome per il momento sto solo facendo prove, non potrei ricaricare  
un'altra distribuzione (Debian (forse no, è la fonte di Ubuntu, o no?),  
CentOS, FantaLinux) e sperare che lì, sia Firebird 3, sia php, si parlino  
meglio?


 parlino meglio?
 
La 3.x è presente in Debian testing ed è prevista per Ubuntu 17.04 (che 
uscirà ad aprile, come dice il nome, e NON È una LTS, quindi occhio se 
vuoi usarlo sui server).
 
 
Se stai solo sperimentando, e visto che non sei esperto di Linux, io 
proverei a installare Debian testing.
 
Ma, a meno che non ti serva assolutamente Firebird 3, usare Ubuntu 16.04 
o 16.10 con i pacchetti standard della 2.5 sarebbe la cosa migliore.
 
Bye.
 

manuale di comandi Linux?
 
Hai fatto una cosa brutta, ovvero hai detto al sistema di usare la lib3.0 al
posto della 2.5. Come ha fatto notare Alessandro, la cosa non è gratis - nel
senso che si porta dietro un botto di rischi.
 
Specificamente, qualsiasi software che si aspetti una 2.5 purosangue e abbia
fiducia in qualche quirk che nel frattempo è cambiato (*in teoria* non ce ne
dovrebbero essere, ma la pratica è sempre diversa dalla teoria) gli piglierà
un colpo.
 
Spero & suppongo che di questi software sulla tua macchina non ce ne sia, ma
se mai dovessi installare, ricordati che ora hai un firebird instabile.


 se mai dovessi installare, ricordati che ora hai un firebird instabile.
 
Ricevuto. Grazie.
 
-- 
Michele Giordano
parolescritte.it
 

 o 16.10 con i pacchetti standard della 2.5 sarebbe la cosa migliore.
 
Il passaggio da 2.5 a 3.x è quasi irreversibile... (per esempio, è  
difficile rinunciare ai cursori bidirezionali).
 
Comunque grazie. Ho imparato un mucchio di cose.
 
 
-- 
Michele Giordano
parolescritte.it
 

 Questa è l'idea. Ma il prossimo LTS è 18.10 (come dice il nome)?
 
Le LTS escono ogni 2 anni, quindi 14.04, 16.04 e la prossima sarà 18.04 
(a meno che nel frattempo non cambino idea, ma ormai è consolidato).
 
Bye.

 e vedi che succede. Alla peggio, il file ".bak" è disponibile.
 
Per capire...
Dopo aver fatto quello che suggerisci (tranne gli ultimi due comandi,  
niente "sisammai", per semplicità) mi ritrovo:
 
root@vmi97986:/usr/lib/x86_64-linux-gnu# ls -il libfbclient*
14949157 lrwxrwxrwx 1 root root      20 Aug  5  2015 libfbclient.so.2 ->  
libfbclient.so.2.5.4
14949163 -rwxr-xr-x 2 root root 1816176 Feb  4 21:29 libfbclient.so.2.5.4
14949153 -rw-r--r-- 1 root root  869448 Aug  5  2015  
libfbclient.so.2.5.4.bak
14949163 -rwxr-xr-x 2 root root 1816176 Feb  4 21:29 libfbclient.so.3.0.1
 
se faccio:
 
root@vmi97986:/usr/lib/x86_64-linux-gnu# rm libfbclient.so.2.5.4
root@vmi97986:/usr/lib/x86_64-linux-gnu# rm libfbclient.so.3.0.1
root@vmi97986:/usr/lib/x86_64-linux-gnu# ln -s  
/opt/firebird/lib/libfbclient.so.3.0.1 libfbclient.so.2.5.4
 
funziona.
Lo so che spesso "funziona" vuol dire "funziona però", ma in questo caso:  
qual è la differenza?
È necessario l'hard link? Perché?
