Questo breve articolo prende spunto da un problema sollevato da un mio collega circa l’impossibilità di caricare il modulo PHP PDO Informix su piattaforma Microsoft Windows. La risoluzione del problema è molto semplice, è analoga a quella descritta nell’articolo The ultimate guide of: Mac OS X Snow Leopard, Informix, PHP 5.3 & PDO, l’unica differenza è la piattaforma di esecuzione, ovvero, Microsoft Windows.
La piattaforma di riferimento è Zend Server 5.1 (PHP 5.2.x) su sistema operativo Microsoft Windows, la piattaforma Zend include il modulo PDO Informix già compilato (php_pdo_informix.dll), ovviamente, nessuno vieta l’utilizzo di PHP “standard” http://www.php.net. Solitamente ogni modulo di PHP per essere regolarmente attivato, richiede che una serie di requisiti siano soddisfatti. Il modulo PDO Informix richiede l’installazione di IBM Informix Client SDK, senza questo componente software non sarà possibile caricare il modulo PDO Informix. Nella Figura 1 è illustrato l’errore che evidenza la dipendenza non risolta del modulo PDO Informix, in Figura 2 è invece illustrata la corretta risoluzione delle dipendenze dopo l’installazione di IBM Informix Client SDK.
L’attivazione del modulo PDO Informix dopo l’installazione del Client Informix dal modulo di amministrazione di Zend Server, non darà più nessun errore di caricamento, vedi Figura 3 e Figura 4.
Una volta attivo il modulo PDO Informix, è necessario procedere con la configurazione del Client Informix e ODBC prima di proseguire con la codifica del codice PHP di connessione via PDO all’istanza Informix. La configurazione del Client Informix deve essere seguita con il programma Informix SetNet32.
Per maggiori informazioni sulla configurazione del Client Informix e ODBC fare riferimento al portale di supporto di IBM. Riporto un articolo di Kellen Bombardier che spiega step-by-step come installare, configurare e testare uno stack applicativo composto da Apache, Informix IDS e PHP Server su piattaforma Windows.




Articolo perfettamente esplicativo circa la metodologia da seguire per configurare il modulo PDO informix in ambiente Windows.
OTTIMO!!!!!
Ciao, ho seguito le tue indicazioni ma continuo ad avere:
ERR – The system could not load this extension
Nel file di log ho questo errore:
PHP Warning: PHP Startup: Unable to load dynamic library ‘C:\Program Files\Zend\ZendServer\lib\phpext\php_pdo_informix.dll’ – The specified module could not be found.
in Unknown on line 0
Eppure il file è presente.
SO: Windows server 2003 R2 SP2
Zend Server: 5.1.0
CSDK: 3.50.TC6
L’installazione del server è pulita ed ho installato nell’ordine il Zend Server con il modulo Informix, il CSDK e poi attivato tra le estensioni.
Ci sono altre cose da verificare?
Grazie
ciao
Ciao Alessandro,
la prima cosa che mi viene in mente è la verifica della variabile di ambiente PATH, questa dovrebbe includere il PATH delle librerie (DLL) del CSDK. Magari prova ad utilizzare il tool Dependency Walker per la verifica del corretto link con le DLL.
Fammi sapere.
Bye,
Antonio.
Leggendo nei forum di Zend pure a me era venuto quel sospetto. Infatti ho verificato che nel path fosse specificato il percorso del CSDK. Inoltre ho fatto diverse prove mettendolo prima, dopo e togliendolo come specificato in questo topic. Ma il risultato non è cambiato.
http://forums.zend.com/viewtopic.php?f=44&t=6714
Questo il path
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\ibm\gsk7\bin;C:\Program Files\ibm\gsk7\lib;”C:\Program Files\Zend\ZendServer\bin”;”C:\Program Files\Zend\ZendServer\share\ZendFramework\bin”;C:\Program Files\IBM\Informix\Client-SDK\bin
La cosa assurda è che su un altro server (sempre virtualizzato, con sistema operativo identico) tutto ha funzionato a primo colpo. Ho anche provato a modificare il path di questo per vedere se riuscivo a ricreare l’errore, ma invece su questo funziona sempre. Il che mi fa presupporre che il problema sia un altro.
Nel topic che ti ho indicato sopra l’utente specifica che potrebbe anche essere che il path usato dal web server non è quello d’ambiente. Ma in questo caso non saprei cosa fare per modificarlo.
Inoltre, seguendo la tua guida, anche io ho utilizzato il Dependency Walker su entrambi i server (quello funzionante e quello non) e per entrambi le dipendenze sembrano ok tranne per un paio (IESHIMS.DLL e WER.DLL) che però non sembra siano fondamentali considerando appunto che su uno funziona.
Altro non mi viene in mente, ho provato anche a ripartire da zero (ho un’immagine pulita del server) reinstallando il CSDK seguito dal Zend Server, e viceversa ma su questo server non c’è nulla da fare.
Ciao Alessandro,
sicuramente il PATH per come indicato sul tuo commento deve essere visto da Zend Server, probabilmente hai già verificato l’env che vede Zend. Detto questo, alle brutte potresti provare a copiare le DLL del CSDK (o meglio solo quelle necessarie) direttamente sulla System32 di Windows. Verifico se magari ho tra le mie VM qualcuna con Windows 2003 per poter fare una simulazione.
Bye,
Antonio.
Ora ho riprovato anche ad utilizzare, ripartendo dal server pulito:
ZendServer-CE-php-5.3.8-5.5.0-Windows_x86.exe
clientsdk.3.70.TC3.WIN
Del client ho installato solo gli ODBC e GLS. L’IBM DATA SERVER DRIVER va installato? Ho provato prima senza e poi con ma il risultato non cambia.
A questo punto mi farò un clone dell’altra macchina, la ripulisco ed installo, però lascio in stand-by questa perchè voglio capire dove sta il problema.
Se hai qualche idea ben venga.
Ciao Alessandro,
al momento non mi vengono altre idee in mente, in allegato trovi due img con la configurazione adotta da me. L’IBM Data Server Driver non serve per il modulo PDO_INFORMIX.
Se può esserti d’aiuto (sempre che non conosci già) ti allego il link di Informix Dynamic Server Application Development http://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=1QARn_7DZwnJcFHQyVO2WnRE3sX0Ec9SX6mu7glEExPhHBbBS_cZYgSOg9nmr&hl=it.
Bye,
Antonio
Sono nuovo in Zend per cui se mi dici anche come verificare l’env lo faccio subito per togliere altri dubbi.
Dalla console di amministrazione di Zend, dovresti andare sul Monitor e poi PHP Info.
Bye,
Antonio
Il documento non lo conoscevo per cui grazie, appena ho tempo me lo leggo.
Non trovo però gli allegati ai quali ti riferisci.
Le variabili allora le avevo correttamente verificate tramite PHPInfo e sono corrette.
Farò altre prove perchè vorrei capire a cosa sia dovuto il problema.
Grazie intanto.
ciao
Ciao,
ho risolto il problema grazie al supporto nel forum (un ringraziamento particolare a Zvika Dror).
In definitiva il problema nasce dalla mancanza nel path del file C:\Program Files\Zend\ZendServer\etc\ZendEnablerConf.xml del percorso del client sdk C:\Program Files\IBM Informix Client SDK\bin.
Una volta aggiunto questo e riavviate il server PHP tutto funziona correttamente.
Ciao Antonio eccomi di nuovo qui per un altro problemino.
Il supporto ad informix ora è funzionante ed anche l’ODBC è configurato correttamente e funzionante.
Mi aspettavo però di poter configurare il database in application.ini in questo modo:
resources.db.adapter = “pdo_informix”
resources.db.params.host = “localhost”
resources.db.params.username = “root”
resources.db.params.password = “pass”
resources.db.params.dbname = “nome_3″
Ma il server va a cercare il file Informix.php non trovandolo
Warning: include_once(Zend\Db\Adapter\Pdo\Informix.php)
Dove posso recuperare questo file?
Oppure la configurazione è errata?
Grazie
ciao