2013-01-01 10 views
22

Mi chiedo se qualcuno mi può aiutare con un problema che mi sta facendo tirare quel che resta dei miei capelli ...cercando di costruire estensione PHP DOP per gli U2 Rocket

Attualmente sto lavorando su un progetto che mi obbliga parlare con un database Unidata. PHP non ha un driver nativo per accedere a questo tipo di database, tuttavia, dopo un po 'su Google, ho trovato il seguente:

https://u2devzone.rocketsoftware.com/accelerate/articles/u2-pdo-driver/u2-pdo-driver.

Ho l'intestazione e la libreria U2 Intercall e penso di includerli correttamente. Tuttavia, l'estensione compila ma non passa il test in quanto errori con

pdo_u2.so: undefined symbol: ic_universe_session in Unknown on line 0 

che mi suggerisce che non viene collegato alla libreria. Quando posso modificare il makefile e specificare a mano che la biblioteca dovrebbe essere incluso, esso errori fuori con

relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC 
/home/kaigoh/Downloads/intcall/lib/libuvic.a: could not read symbols: Bad value 
collect2: error: ld returned 1 exit status 
make: *** [pdo_u2.la] Error 1 

Ho provato costringendo l'interruttore -fPIC nel makefile ma ottengo lo stesso errore.

Semplicemente non ne so abbastanza di compilare estensioni PHP personalizzate per aiutare me stesso, e spero che qui ci sia un guru che può indicarmi la giusta direzione!

UPDATE: Questo compila perfettamente con una installazione 32 bit di Linux, quindi nessuna idea del perché sta venendo a mancare con un 64-bit installazione ...

+1

È probabilmente perché i componenti U2 per l'intercal sono compila a 32 bit, quindi non è possibile utilizzarlo per 64 bit. Se hai un contratto di supporto attivo, il tuo fornitore di supporto potrebbe essere in grado di aiutarti. –

+0

Dai messaggi di errore che hai fornito sembra che si stia tentando di connettersi a UniVerse, tuttavia hai affermato che vuoi connetterti a UniData quindi devi assicurarti che le impostazioni di connessione siano corrette per UniData. Sospetto tuttavia che il commento di Dan sia la ragione principale. –

+0

@kaigoh: la prossima volta che verrai online, rivedi la tua domanda qui e aggiungi ulteriori informazioni su ciò che è accaduto da allora. Inoltre, si prega di rivedere i commenti e le risposte e fornire un feedback per loro. Grazie. – hakre

risposta

2

So che ho fatto questa domanda molto tempo fa, ma la soluzione definitiva che ho trovato era scrivere un middleware in C# con le librerie .Net di Rocket insieme ad alcune classi PHP in grado di leggere ed elaborare dati da UniData.

Se qualcuno è interessato a maggiori dettagli su come ho effettuato l'accesso a UniData da PHP, non esitate a scrivermi.

+0

Mi piacerebbe sapere di più su come hai realizzato questo. Per favore, scrivimi a mike.roosa su gmail se non ti dispiace. –

1

lib/libuvic.a deve essere ricompilato con -fPIC , non solo il codice che sta cercando di collegarlo ad esso. Non posso dire dai tuoi campioni di output se hai ricompilato la libreria con -fPIC, oppure no.