The ultimate guide of: Mac OS X Snow Leopard, Informix, PHP 5.3 & PDO

Nel mio ultimo articolo Mac OS X Snow Leopard: Informix IDS 11.5 + PHP 5.3 è stato spiegato come installare e configurare IBM Informix IDS 11.5 affrontando inoltre la compilazione e installazione del modulo PHP Informix (The PHP Group, 2010). In quest’articolo vedremo come portare a termine con successo l’installazione del modulo PDO Informix (The PHP Group, 2010), ma non solo, vedremo anche qualche esempio pratico sull’utilizzo del modulo PDO Informix.

Il modulo PDO Informix è il driver che implementa l’interfaccia PHP Data Object (PDO) (The PHP Group, 2010) che consente l’accesso da PHP a data base IBM Informix IDS.

Per problemi di formattazione del testo con WordPress, allego l’intero articolo in formato PDF: The ultimate guide of: Mac OS X Snow Leopard, Informix, PHP 5.3 & PDO. A brevo pubblicherò la versione inglese sul mio My developerWorks Blog.

News: Ho da poco pubblicato la versione inglese dell’articolo sul mio blog My developerWorks, sempre sul Blog ho messo a disposizione la versione sempre inglese in formato PDF all’indirizzo https://www.ibm.com/developerworks/mydeveloperworks/files/app/person/2700014JY6/file/1fc210ed-870a-40a5-b072-19c9e024c48c



Antonio Musarra

I began my journey into the world of computing from an Olivetti M24 PC (http://it.wikipedia.org/wiki/Olivetti_M24) bought by my father for his work. Day after day, quickly taking control until … Now doing business consulting for projects in the enterprise application development using web-oriented technologies such as J2EE, Web Services, ESB, TIBCO, PHP.

You may also like...

  • Pingback: Attivare il modulo PHP PDO Informix in Zend Server 5 | Antonio Musarra's Blog

  • Pingback: Activate the PDO Informix module in Zend Server 5 « Antonio Musarra's Blog

  • emanuele

    ciao antonio,
    complimenti per il blog che reputo molto interessante.
    ti scrivo perchè durante le mie ricerche sul web, mi sono imbattuto in questa tua molto interessante guida che mi lascia sperare sulla soluzione del mio problema.
    appunto: il mio problema. quello da te descritto in questa guida io dovrei applicarlo ma su una macchina dove gira lion. ti chiedo: esiste il modo per trasferire la procedura su lion?
    spero tu possa indicarmi una soluzione e già ti ringrazio.
    ancora complimenti e ciao

    emanuele

    • http://musarra.wordpress.com Antonio Musarra

      Ciao Emanuele,
      ti ringrazio per l’apprezzamento dell’articolo che non ricordavo fosse così anziano, del 2010!

      Adesso è un pò che non sono aggiornato sulle release di IDS per OS X. Se disponibile IDS per OS X Lion la procedura dovrebbe rimanere inalterata e funzionare tutto correttamente.

      Se ho qualche minuto provo a vedere se IBM ha rilasciato la versione del CSDK e IDS per Lion.

      Bye,
      Antonio.

    • http://musarra.wordpress.com Antonio Musarra

      Ciao Emanuele,
      ho eseguito una verifica al volo e l’ultima versione di IDS è compatibile con OS X Snow Leopard (http://m.ibm.com/http/www-01.ibm.com/support/docview.wss?rs=630&uid=swg27013343&S_CMP=rnav) L’architettura di Lion è differente rispetto al suo predecessore, questo potrebbe causare qualche problema!!!

      Ma tu hai proprio la necessità di avere la piattaforma di IBM su OS X?

      Hai pensato di farti una VM Linux con lo stack completo, Linux/IDS/PHP/PDO?

      Bye,
      Antonio.

      • emanuele

        ciao antonio,
        innanzitutto ti ringrazio per la tua disponibilità e la tempestività delle tue risposte. ne approfitto, quindi, per dettagliare un attimo la mia esigenza.
        ho informix server montato su una vecchia suse dove girano anche applicazioni, server web e php 3.x. ho installato un mac server con lion dove vorrei trasferire tutta la piattaforma web lasciando però sulla vecchia macchina informix. il mio problema è nel compilare il php 5.3 su os x con il modulo ifx o altrimenti con il pdo_informix. per questo non credo che virtualizzare mi cambi tanto.
        i tuoi suggerimenti sono molto graditi. ancora grazie.

        ciao
        emanuele

        • http://musarra.wordpress.com Antonio Musarra

          Ciao Emanuele,
          si potrebbe provare a scaricare il CSDK per OS X provare ad installarlo per verificare la compatibilità e successivamente provare a compilare il modolo informix.

          Ovviamente è un esperimento, IBM non certifica per Lion; cmq, tentar non nuoce.
          Bye,
          Antonio.

        • http://musarra.wordpress.com Antonio Musarra

          Ciao Emanuele,
          ho appena eseguito un test di compilazione, installazione e test del modulo PDO Informix con successo anche su Mountain Lion. Ho utilizzato il CSDK 3.70FC4DE. La guida che ho scritto è valida anche per Lion.

          Fammi sapere.
          Bye,
          Antonio.

  • emanuele

    ciao antonio,
    ho appena letto l’esito del tuo test e ciò mi lascia fiducioso.
    anch’io continuo ad andare avanti con il test anche se su una strada un attimo diversa dal pdo. mi spiego meglio:
    ho installato il csdk 3.70fc4de ma ho scelto di provare la compilazione del modulo informix come da te descritto nella procedura “Mac OS X Snow Leopard: Informix IDS 11.5 + PHP 5.3″. tutto bene, sembra, se non fosse che alla fine mi accorgo che non ha funzionato e che alla verifica finale ottengo questo risultato:
    “…php -i|grep Informix
    PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php/extensions/no-debug-non-zts-20090626/informix.so’ – dlopen(/usr/lib/php/extensions/no-debug-non-zts-20090626/informix.so, 9): Library not loaded: iasfs09b.dylib
    Referenced from: /usr/lib/php/extensions/no-debug-non-zts-20090626/informix.so
    Reason: image not found in Unknown on line 0″
    sono sicuro che ho combinato qualche pastrocchio io ma non riesco a capire dove.
    spero di non infastidirti troppo. grazie.

    ciao
    emanuele

    • http://musarra.wordpress.com Antonio Musarra

      Ciao Emanuele,
      quel tipo di errore deriva dal fatto che il modulo informix non riesce a trovare le librerie sul path attuale di ricerca. Sei sicuro di aver settato le variabili d’ambiente richieste? In particolare dovresti settare la variabile:

      setenv DYLD_LIBRARY_PATH
      /opt/IBM/informix/lib:/opt/IBM/informix/lib/esql:/opt/IBM/informix/lib:/opt/IBM/inform
      ix/lib/cli

      Revisiona i path e fai un test, in questo modo dovrebbe funzionare.

      Bye,
      Antonio.

      • emanuele

        ciao antonio,
        tutto fatto. grazie mille dell’aiuto. adesso sul phpinfo() trovo il modulo informix.
        e giusto per romperti le scatole fino in fondo, sperando che in ogni caso la nostra discussione sia utile pure a qualche altro appassionato, vorrei chiederti un aiuto su come configurare l’ifx_connect sul server remoto. ho già configurato sqlhosts in questo modo:
        server_db onsoctcp host_server 1526
        appena provo ad eseguire uno script con ifx_connect(‘db@server_db’,’user’,’passwd’) il browser risponde che è impossibile visualizzare la pagina.
        spero solo di non averti scocciato troppo.
        ciao
        emanuele

        • http://musarra.wordpress.com Antonio Musarra

          Ciao Emanuele,
          sicuramente il thread potrà essere d’aiuto a qualche altra persona che si avventura!!!
          Che il browser risponda “pagina biancha” è un pò poco. Controlla i file di log di apache o php per accertarti dell’effettivo errore.
          Probabilmente vedi pagina bianca perchè PHP (vedi php.ini) è configurato per non mostrare gli errori in output sul client, magari in fase di sviluppo e test ti conviene attivare il display degli errori.
          E’ probabile che non ti si connetta al server informix per qualche problema di configurazione.

          Bye,
          Antonio.

  • emanuele

    ciao antonio,
    mi ero illuso che tutto fosse a posto ma mi sbagliavo.
    sono andato a controllare il file error_log e mi sono accorto che, dopo il tentativo di connessione con il server informix, viene scritto il seguente messaggio:
    “dyld: Symbol not found: _ifx_checkAPI
    Referenced from: /Applications/IBM/informix/lib/esql/isqls09b.dylib
    Expected in: dynamic lookup”
    quindi suppongo che il problema sia nel link delle librerie e che, nonostante sul phpinfo() ho disponibile il modulo informix, la compilazione è fallita.
    sono sicuro che sia errore mio nell’aggiungere l’indicazione di checkapi.o nel makefile anche se durante il make non ho nessun messaggio. come faccio a linkare correttamente la libreria? quale ulteriore verifica posso fare per essere sicuro che non ci sia altro? il path di checkapi.o per me è /applications/ibm/informix/lib/esql/checkapi.o.

    ciao
    emanuele

    • http://musarra.wordpress.com Antonio Musarra

      Ciao Emanuele,
      quanti lontani ricordi stai tirando su!
      Allora, sul documento Mac OS X Snow Leopard: IBM Informix IDS 11.5 + PHP 5.3 () al capitolo 1.6.1 Compilazione del modulo Informix, parla proprio del problema e di come risolvere modificando il make file.

      Bye,
      Antonio.

      • emanuele

        gentilissimo antonio,
        il mio riferimento è proprio quella tua guida.
        e giusto al capitolo 1.6.1 che trovo delle difficoltà.
        eseguo il make ed ottengo questo messaggio: ”
        srv:php_ext_informix ema$ make
        /bin/sh /Users/ema/php_ext_informix/libtool –mode=install cp ./informix.la /Users/ema/php_ext_informix/modules
        cp ./.libs/informix.so /Users/ema/php_ext_informix/modules/informix.so
        cp ./.libs/informix.lai /Users/ema/php_ext_informix/modules/informix.la
        ———————————————————————-
        Libraries have been installed in:
        /Users/ema/php_ext_informix/modules

        If you ever happen to want to link against installed libraries
        in a given directory, LIBDIR, you must either use libtool, and
        specify the full pathname of the library, or use the -LLIBDIR'
        flag during linking and do at least one of the following:
        - add LIBDIR to the
        DYLD_LIBRARY_PATH’ environment variable
        during execution

        See any operating system documentation about shared libraries for
        more information, such as the ld(1) and ld.so(8) manual pages.
        ———————————————————————-

        Build complete.
        Don’t forget to run ‘make test’.

        fatto questo null’altro.
        credo che inizio a demoralizzarmi.

        ciao
        emanuele

        • http://musarra.wordpress.com Antonio Musarra

          Ciao Emanuele,
          allora è veramente strano….dai, vedrò di provare pur io compilare il modulo informix sul mio Lion. Sarà una cavolata. ..

          Bye,
          Antonio.

        • http://musarra.wordpress.com Antonio Musarra

          Ciao Emanuele,
          sul documento PDF e in particolare sul capitolo 1.6.1 non sono come ma manca un pezzo presente sul DOC (orginale), che per i non addetti ai lavori può essere essenziale. Detto questo, la direttiva completa è la seguente:

          INFORMIX_SHARED_LIBADD = -Wl,-rpath,/Applications/IBM/ClientSDK3.70FC4DE/lib/esql -L/Applications/IBM/ClientSDK3.70FC4DE/lib/esql -Wl,-rpath,/Applications/IBM/ClientSDK3.70FC4DE/lib -L/Applications/IBM/ClientSDK3.70FC4DE/lib -lifsql -lifasf -lifgen -lifos -lifgls -lc -lm -ldl /Applications/IBM/ClientSDK3.70FC4DE/lib/esql/checkapi.o -lifglx

          Dopo la modifica del Make file un bel make & make install e come verifica del link il comando (indicato sul PDF):

          $ nm .libs/informix.so|grep checkAPI
          000000000000a550 T _ifx_checkAPI

          Ho provato a eseguire un test con un banale script PHP, è andato a buon fine, non ho ottenuto errori riguardo a link.

          Fammi sapere, dovrebbe andare bene.
          P.S: Se stai su LinkedIn mi farebbe piacere una segnalazione.

          Bye,
          Antonio.

  • emanuele

    ciao antonio,
    rieccomi quà dopo la pausa di fine settimana in cui, generalmente, mi estraneo dai problemi ‘quotidiani’. il punto:
    si, avevo già inserito la direttiva nel makefile e compilato ma, non so perchè, non cambiava nulla. ho azzerato tutto, dall’installazione dal svn a nuova compilazione e finalmente esiste il riferimento al checkapi. a questo punto, dopo aver spero correttamente settato sqlhosts (server_1 onsoctcp host turbo), provo a eseguire uno script php dove faccio un connect sulla macchina remota. risultato? un nuovo errore: ”
    srv:etc ema$ php /Library/Server/Web/Data/Sites/Default/test_ifx.php
    ciaodyld: lazy symbol binding failed: Symbol not found: _gl_setextfunc
    Referenced from: /Applications/IBM/informix/lib/esql/igens09a.dylib
    Expected in: dynamic lookup

    dyld: Symbol not found: _gl_setextfunc
    Referenced from: /Applications/IBM/informix/lib/esql/igens09a.dylib
    Expected in: dynamic lookup

    Trace/BPT trap: 5

    dove sbaglio?
    ciao e ancora grazie
    emanuele

    p.s.:ho pensato di utilizzare il modulo pdo ma quando provo a scaricarlo con pecl mi restituisce errore di checksum.
    p.p.s.: no, non sono su linkedin.

    • emanuele

      scusami, ho sbadatamente scritto sul ps che pecl mi restituiva errore di checksum: no, l’errore è bad md5sum e nel dettaglio ‘
      warning: pecl/PDO_INFORMIX requires package “pear/PDO”
      downloading PDO_INFORMIX-1.3.0.tgz …
      Starting to download PDO_INFORMIX-1.3.0.tgz (67,505 bytes)
      ……………..done: 67,505 bytes
      ERROR: bad md5sum for file /private/tmp/pear/temp/PDO_INFORMIX/package.xml

      ciao ancora
      emanuele

      • http://musarra.wordpress.com Antonio Musarra

        Ciao Emanuele,
        sarà qualche problema con il repository PECL. Puoi comunque fare il download del tgz dal sito e proseguire in manuale.

        Bye,
        Antonio.

    • http://musarra.wordpress.com Antonio Musarra

      Ciao Emanuele,
      assicurati di avere tutte le ENV necessarie quando esegui lo script PHP via CLI. Il test che ho fatto io non mi ha dato nessun problema a parte l’errore di connessione. Lo script da me usato è quello del documento.

      Bye,
      Antonio.

      • emanuele

        ciao antonio,
        finalmente risolto!! come avevi detto tu era un problema di variabili settate male in fase di compilazione del modulo. adesso tutto bene, connessione remota compresa. grazie mille per la pazienza dimostrata e per la grande competenza.
        a presto.

        emanuele

        • http://musarra.wordpress.com Antonio Musarra

          Ciao Emanuele,
          bella prova :-)

          Bye,
          Antonio.