Newsgroup: it.comp.www.php
Titolo: far vedere oracle a php

mentre mi informo su Google ecc. mi permetto di mandare avanti la
domanda specifica: 
linuxbox RH7.3, apache 1.3, php 4.1.2, oracle 8.1.7 (mi interessa solo
il client per ora)
intendo collegare un server oracle dipartimentale che ho opportunamente
definito in TNSNAMES.ORA
solo a qs. punto mi accorgo che php non riconosce le funzioni oracle
(intendo usare le oci...())
In generale immagino di dover ricompilare php includendo oci e un
riferimento alle librerie di Oracle 
Ma con phpinfo() vedo che alla voce "configure with" dice un sacco di
"with this with that" mi aspetto che oracle, mancando, non sia nominato
invece e' l'unico per cui usa la clausola without:'--without-oci8'
DOMANDA: potrebbe essere, visto che lo nomina, che oci8 e' gia' noto al
php e puo' essere acceso modificando uno swith runtime, invece che
ricompilando tutto? 
Grazie
B.

ricompilando tutto?
Non credo proprio. Al massimo, se hai sotto mano un modulo oci8 compilato come libreria dinamica, puoi tirarlo su con dl()... 
Ciao!
Ivan

 invece e' l'unico per cui usa la clausola without:'--without-oci8'
IMO: ricompila PHP con --with-oci8=$ORACLE_HOME --with-oracle=$ORACLE_HOME
questo ti linka il libphp4.so alla libreria client di oracle.
verifica dopo la ricompilazione con ldd /usr/libexec/libphp4.so
POI, quando starti apache, devi avere nello script di startup le variabili 
oracle settate, a meno che tu non preferisca settarle a mano in ogni script 
php...
prima fatti una copia del vecchio libphp4.so.
se poi hai problemi fai sapere.
ciao
-- 
Punkarruso
mail:punkarruso chiocchiolona despammed punto com
pubblicità progresso:
http://php.dopoil.com/faq.php

 prima fatti una copia del vecchio libphp4.so.
Grazie, provo. Ho avuto brutte esperienze con le ricompilazioni e preferivo 
risparmiamela.  In realta' ora ho un RH7.3 out of the box, il php che gira 
e' quello precotto da red hat.
Domandina, ho notato di avere sul linubox PEAR:DB che e' un livello di 
astrazione che sta "sopra php" per connessione ai database con una sintassi 
universale. Ho notato che fra le librerie di PEAR e' presente quella per 
oracle.
La domanda e': questa libreria che voi sappiate lavora da sola (dimodoche' 
posso evitare di ricompilare php) o e' solo uno strato traduttore che si 
appoggia alla presenza del supporto oracle di php, e quindi se non c'e' il 
supporto nativo non fuzniona neanche PEAR, e dunque non si scappa alla 
necessita' di ricompilare?
Ho provato, con pear:DB + mysql funziona bene (php e' compilato col supporto 
mysql) mentre con pear:DB + oracle mi da' il messaggio "no such database" 
(mi aspetterei piuttosto un messaggio del tipo "oci8 unsupported" o 
simili).
Beh, grazie
B.

 unsupported" o simili).
PEAR::DB è appunto una classe di astrazione che sta SOPRA il PHP, non sotto.
quindi al suo interno utilizza oci_logon, mysql_connect ecc.
serve semplicemente per poter scrivere codice portabile da un db all'altro 
senza variare altro all'infuori del dsn.
per usarlo ti serve comunque il supporto di connessione a questo database.
sarebbe troppo facile, sennò!
fidati, non è così impestato ricompilare.
ricorda solo di salvare la vecchia lib e di salvare di volta in volta i 
parametri che hai passato al configure (annotandoti quali hanno 
funzionato).
col tempo, ricompilerai PHP a occhi chiusi!
ciao
-- 
Punkarruso
mail:punkarruso chiocchiolona despammed punto com
pubblicità progresso:
http://www.gnu.org/gnu/manifesto.it.html

 se poi hai problemi fai sapere.
Scaricato, compilato, messe on le variabili globali, collegato oracle, legge
le tabelle del server dipartimentale. Wow!  temevo peggio.
Non capisco come mai se digito php -v da shell mi da' un versione e se
faccio phpinfo() dal browser me ne da' un'altra. Evidentemente ce ne sono
die, forse uno statico e uno dinamico? ho compilato il modello dinamico.
Lascia perplessa la sintassi delle funzioni OCi, sono meno chiare di quelle
di mysql. Francamente, ho copiato pari pari gli esempi di un sito web
"webmonkey" e mi riservo di capire come funzionano piu' tardi. Opero in sola
lettura e danno non dovrei farne.
Grazie, ciao!
B.

 in sola lettura e danno non dovrei farne.
la sintassi di PHP ricalca le API vere e proprie fornite col prodotto a cui 
interfacciarsi. anche le funzionalitą che offrono sono diverse (per questo 
creare una buona astrazione č difficile).
se tu facessi un giro nei sorgenti di PHP capiresti...
alla fine č solo una questione di farci la mano.
ciao!
-- 
Punkarruso
mail:punkarruso chiocchiolona despammed punto com
pubblicitą progresso:
http://www.gnu.org/gnu/why-gnu-linux.it.html

 sono due php diversi.
Capito, grazie
ciao
B.

 (dopo reboot) ... il modulo php non connette piu' e da' errore.
L'errore Ora-12154 (mancato collegamento) e' causato dal fatto che a php non 
risultano settate le variabili d'ambiente ORACLE_HOME e TNS_ADMIN. Strano 
perche' le ho messe nel profilo di sistema in /etc/profile e da shell con 
SET le vedo benissimo.
php invece le ignora e obbliga a fare putenv(). Vanno forse dichiarate in 
php.ini?
Ciao
B.
 

 php.ini?
no. nell'apachectl alla voce start).
l'/etc/profile viene caricato all'avvio di una shell. ma i servizi che 
partono allo startup sono un'altra cosa.
ciao
-- 
Punkarruso
mail:punkarruso chiocchiolona despammed punto com
pubblicità progresso:
http://groups.google.com

 no. nell'apachectl alla voce start).
Grazie, ci sono riuscito. (non vanno esportate ma dichiarate come variabili 
fra virgolette). init.d httpd lancia apachectl che a sua volta...
Adesso non solo funziona, ma comincio ad avere l'impressione che funziona 
perche' e' configurato giusto e non perche'  "gli va di andare"
PS nell'installazione di 8.1.7 c'e' piu' che un bug, ci sono almeno tre o 
quattro accorgimenti (unset LANG, editare root.sh, l'errore di compilazione 
di 
env_ctx.mk
, le patch ecc.)
Ciao
B.
PPS se uno dovesse copiare a scadenze prefissate le righe nuove da alcune 
tabelle oracle su un server AIX di produzione a un linuxbox sotto mysql, tu 
come faresti?
ri-ciao
B.

 tu come faresti?
per restare OT, scrivo tutto in PHP e schedulo a cron.
altrimenti anche uno script bash.
se vuoi performances, meglio ancora un programmino in C o pro*C.
ciao
-- 
Punkarruso
mail:punkarruso chiocchiolona despammed punto com
pubblicità progresso:
http://www.gnu.org/philosophy/motivation.it.html