Mac$OS$X$Snow$Leopard:$IBM$InformixIDS11.5+PHP5.3...Copyright*©2009*–Antonio*Musarra*–** *...

13
Copyright © 2009 – Antonio Musarra – http://musarra.wordpress.com Mac OS X Snow Leopard: IBM Informix IDS 11.5 + PHP 5.3 1.1 Introduzione Da quando IBM 1 ha esteso il supporto di Informix Dynamic Server (IDS) a Mac OS X, definendo vincente la combinazione dei due, IBM ha fatto la felicità di migliaia di sviluppatori e DBA non più costretti ad avere un server IDS remoto sui cui lavorare. In quest’articolo vedremo come installare e configurare in semplici passi IBM Informix IDS 11.5 sul nostro Mac OS X Snow Leopard. La particolarità illustrata nella parte finale dell’articolo è l’installazione del modulo informix su PHP 5.3, ricordiamo che PHP 5.3 è parte integrante di Mac OS X Snow Leopard. 1.2 Installazione IDS Informix 11.5 Dal sito di IBM dovremmo scaricare la versione di IBM IDS Informix 11.5 per Mac OS X, in particolare la versione Developer 2 di Informix, il download richiede però la registrazione al portale IBM. Il software è distribuito sottoforma di un unico file dmg (iif.11.50.FC5DE.macosx64.dmg) della dimensione di circa 138MByte, al suo interno è disponibile il package d’installazione. Il processo d’installazione è molto semplice, non ci sono particolari indicazioni da seguire eccetto che per la directory di installazione: è consigliabile scegliere la directory /opt/IBM/informix invece della directory /Application proposta dall’installer. Tramite l’ausilio delle Figure illustrate di seguito, vedremo come avviene il processo d’installazione. Figura 1 Installer IDS Informix 11.5 1 Portale IDS Mac http://www01.ibm.com/software/data/informix/mac/ 2 Download della versione IDS 11.50 FC5 DE dall’URL: http://www14.software.ibm.com/webapp/download/preconfig.jsp?id=200805 23+14%3A54%3A11.294505R&S_TACT=104CBW71&S_CMP=

Transcript of Mac$OS$X$Snow$Leopard:$IBM$InformixIDS11.5+PHP5.3...Copyright*©2009*–Antonio*Musarra*–** *...

Page 1: Mac$OS$X$Snow$Leopard:$IBM$InformixIDS11.5+PHP5.3...Copyright*©2009*–Antonio*Musarra*–** * Listato’6Partedioutputdelcomandooninit * Checking group membership …

Copyright  ©  2009  –  Antonio  Musarra  –  http://musarra.wordpress.com  

Mac  OS  X  Snow  Leopard:  IBM  Informix  IDS  11.5  +  PHP  5.3    

1.1 Introduzione  Da  quando  IBM1  ha  esteso  il  supporto  di  Informix  Dynamic  Server  (IDS)  a  

Mac  OS  X,  definendo  vincente  la  combinazione  dei  due,  IBM  ha  fatto  la  felicità  di  migliaia  di  sviluppatori  e  DBA  non  più  costretti  ad  avere  un  server   IDS  remoto  sui  cui  lavorare.    

In   quest’articolo   vedremo   come   installare   e   configurare   in   semplici   passi  IBM   Informix   IDS   11.5   sul   nostro   Mac   OS   X   Snow   Leopard.   La   particolarità  illustrata  nella  parte   finale  dell’articolo  è   l’installazione  del  modulo   informix   su  PHP  5.3,  ricordiamo  che  PHP  5.3  è  parte  integrante  di  Mac  OS  X  Snow  Leopard.    

 

1.2 Installazione  IDS  Informix  11.5  Dal  sito  di   IBM  dovremmo  scaricare   la  versione  di   IBM  IDS   Informix  11.5  

per   Mac   OS   X,   in   particolare   la   versione  Developer2   di   Informix,   il   download  richiede  però  la  registrazione  al  portale  IBM.  Il  software  è  distribuito  sottoforma  di   un  unico   file  dmg   (iif.11.50.FC5DE.macosx64.dmg)  della   dimensione  di   circa  138MByte,   al   suo   interno   è   disponibile   il   package   d’installazione.   Il   processo  d’installazione   è  molto   semplice,   non   ci   sono   particolari   indicazioni   da   seguire  eccetto  che  per  la  directory  di  installazione:  è  consigliabile  scegliere  la  directory  /opt/IBM/informix  invece  della  directory  /Application  proposta  dall’installer.  

   Tramite  l’ausilio  delle  Figure  illustrate  di  seguito,  vedremo  come  avviene  il  processo  d’installazione.  

 

Figura  1  Installer  IDS  Informix  11.5  

 

   

 

                                                                                                               1  Portale  IDS  Mac  http://www-­‐01.ibm.com/software/data/informix/mac/  2  Download  della  versione  IDS  11.50  FC5  DE  dall’URL:  http://www14.software.ibm.com/webapp/download/preconfig.jsp?id=2008-­‐05-­‐23+14%3A54%3A11.294505R&S_TACT=104CBW71&S_CMP=  

Page 2: Mac$OS$X$Snow$Leopard:$IBM$InformixIDS11.5+PHP5.3...Copyright*©2009*–Antonio*Musarra*–** * Listato’6Partedioutputdelcomandooninit * Checking group membership …

Copyright  ©  2009  –  Antonio  Musarra  –  http://musarra.wordpress.com  

 

Figura  2  Esecuzione  dello  script  d’installazione  

 

     

Figura  3  Richiesta  della  password  di  amministratore.  

 

     

Figura  4  Installer  IDS  Informix  11.50  

 

     

 

Page 3: Mac$OS$X$Snow$Leopard:$IBM$InformixIDS11.5+PHP5.3...Copyright*©2009*–Antonio*Musarra*–** * Listato’6Partedioutputdelcomandooninit * Checking group membership …

Copyright  ©  2009  –  Antonio  Musarra  –  http://musarra.wordpress.com  

 

Figura  5  Directory  d’installazione  da  cambiare  in  /opt/IBM/informix  

 

     

Figura  6  Componenti  IDS  che  saranno  installati  

 

     

Figura  7  Separazione  dei  ruoli.  Lasciare  il  valore  di  default  

 

     

 

 

 

Page 4: Mac$OS$X$Snow$Leopard:$IBM$InformixIDS11.5+PHP5.3...Copyright*©2009*–Antonio*Musarra*–** * Listato’6Partedioutputdelcomandooninit * Checking group membership …

Copyright  ©  2009  –  Antonio  Musarra  –  http://musarra.wordpress.com  

 

 

Figura  8  Creazione  di  una  demo  IDS  instance.  Lasciare  il  valore  di  default  

 

     

Figura  9  Riepilogo  installazione  IDS  

 

     

 

Figura  10  Note  di  fine  installazione  

 

     

 

Page 5: Mac$OS$X$Snow$Leopard:$IBM$InformixIDS11.5+PHP5.3...Copyright*©2009*–Antonio*Musarra*–** * Listato’6Partedioutputdelcomandooninit * Checking group membership …

Copyright  ©  2009  –  Antonio  Musarra  –  http://musarra.wordpress.com  

 

Figura  11  Termine  installazione  

 

     

Il  processo  d’installazione,  oltre  alla  sola  copia  del  software  nella  directory  indicata,  è  responsabile  della  creazione  sul  nostro  Mac  OS  X  dell’utenza  informix,  questa  sarà  utilizzata  per  compiere  le  operazioni  solitamente  affidate  al  ruolo  di  DBA.  

Nel   prossimo   paragrafo   vedremo   la   fase   di   configurazione   dell’ambiente  d’esecuzione  e  dello  stesso  Informix.  

   

1.3 Configurazione  Il  processo  di  configurazione  potremmo  divederlo  in  due  fasi:    

• Configurazione  ambiente  d’esecuzione;    • Configurazione  Informix.  

Per   quel   che   riguarda   l’ambiente   d’esecuzione   occorre   impostare   le  variabili  d’ambiente  indicate  di  seguito:  

• INFORMIXDIR  =>  Directory  d’installazione  Informix;  • INFORMIXSERVER  =>  Nome  assegnato  all’istanza  Informix;  • INFORMIXSQLHOSTS  =>  File  di  configurazione  SQL  HOSTS;  • ONCONFIG  =>  File  di  configurazione  dell’instanza  Informix;  • DYLD_LIBRARY_PATH  =>  Path  Informix  Libs;  • TERMCAP  =>  File  di  configurazione  terminali;  • DB_LOCALE  =>  Imposta  il  Locale  per  DB;  • CLIENT_LOCALE  =>  Imposta  il  Local  per  client.  

E’   possibile   impostare   le   variabili   d’ambiente   Informix   direttamente  all’interno  del  file  .profile  dell’utenza  informix  (vedi  Listato  1).  

Per  la  configurazione  di  Informix  dovremmo  apportare  delle  modifiche  alla  configurazione   standard,   sono   due   i   file   di   configurazione   sui   quali   agire,  

Page 6: Mac$OS$X$Snow$Leopard:$IBM$InformixIDS11.5+PHP5.3...Copyright*©2009*–Antonio*Musarra*–** * Listato’6Partedioutputdelcomandooninit * Checking group membership …

Copyright  ©  2009  –  Antonio  Musarra  –  http://musarra.wordpress.com  

ambedue   definiti   dalle   due   variabili   di   ambiente:   ONCONFIG   e  INFORMIXSQLHOSTS.  

Per   il   file   definito   da  ONCONFIG   è   consigliabile  modificare   le   sezioni   che  riguardano:  

• Root  Dbspace  Configuration  Parameters;  • System  Configuration  Parameters;  • Network  Configuration  Parameters  

Procedendo  con  l’ordine  indicato  in  precedenza  andremo  a  modificare  e/o  aggiungere  le  configurazioni  di  seguito  indicate  (vedi  Listato  2).  

 

Listato  2  Modifica  della  configurazione  standard  di  Informix.  

 ################################################################### # Root Dbspace Configuration Parameters ################################################################### ROOTPATH $INFORMIXDIR/dbs/amusarra_ifx.rootdbs MIRRORPATH $INFORMIXDIR/dbs/amusarra_ifx.root_mirror ################################################################### # System Configuration Parameters ################################################################### DBSERVERNAME amusarra_ifx DBSERVERALIASES shirus,amusarra_shm ################################################################### # Network Configuration Parameters ################################################################### NETTYPE soctcp,1,30,NET

   

Ho   preferito   collocare   i   file   del   Root   Dbspace   in   dbs   invece   che   in   tmp   e  assegnare  loro  il  nome  dell’istanza  Informix  come  suffisso.  

Nella  configurazione  standard  è  configurato  il  solo  protocollo  ipcshm,  nella  nostra   configurazione   è   stato   aggiunto   il   protocollo   soctcp.   Per   maggiori  informazioni   su   questa   parte   di   configurazione   consiglio   la   lettura   della  documentazione  ufficiale  IDS  Informix  su  NETTYPE  Configuration  Parameter.  

 

Listato  3  Modifica  delle  configurazione  SQL  Hosts  

 # IANA (www.iana.org) assigned port number/service names for Informix: # sqlexec 9088/tcp # sqlexec-ssl 9089/tcp #demo_on onipcshm on_hostname on_servername #demo_se seipcpip se_hostname sqlexec amusarra_ifx onsoctcp amusarra-mobile.local sqlexec shirus onsoctcp amusarra-mobile.local sqlexec-admin amusarra_shm onipcshm amusarra-mobile.local amusarra-mobile

     

Page 7: Mac$OS$X$Snow$Leopard:$IBM$InformixIDS11.5+PHP5.3...Copyright*©2009*–Antonio*Musarra*–** * Listato’6Partedioutputdelcomandooninit * Checking group membership …

Copyright  ©  2009  –  Antonio  Musarra  –  http://musarra.wordpress.com  

Il   Listato   3   indica   la   configurazione   del   file   sqlhosts   opportunamente  modificato   sulla   base   delle   nostre   esigenze   (per   maggiori   informazioni   fare  riferimento  alla  documentazione  ufficiale  IDS  Informix  su  The  sqlhosts  File).  Lo  IANA  ha  definito  delle  porte  TCP  specifiche  per  i  servizi  Informix,  queste  devono  essere  aggiunte  al  file  di  configurazione  dei  servizi  di  rete  (vedi  Listato  4).  

 

Listato  4  Aggiunta  delle  porte  TCP  per  i  servizi  di  rete  Informix  (/etc/services).  

 sqlexec-admin 9087/tcp # IBM Informix SQL Interface - Admin Port sqlexec 9088/tcp # IBM Informix SQL Interface sqlexec-ssl 9089/tcp # IBM Informix SQL Interface - Encrypted

   

 

1.4 Preparazione  e  inizializzazione  di  Informix  Prima   di   procedere   con   il   processo   d’inizializzazione   di   Informix,   occorre  

creare   il   file   “vuoti”   dei   root   dbspace   assegnando   loro   i   permessi   di   lettura   e  scrittura   per   il   solo   utente   informix.   Dal   Terminal,   come   utente   informix,  procediamo  così  come  indicato  nel  Listato  5.  

 

Listato  5  Creazione  directory  e  file  “vuoti”  root  dbspace  

amusarra-mobile:~ informix$ mkdir $INFORMIXDIR/dbs amusarra-mobile:~ informix$ touch $INFORMIXDIR/dbs/amusarra_ifx.rootdbs amusarra-mobile:~ informix$ touch $INFORMIXDIR/dbs/amusarra_ifx.rootdbs_mirror amusarra-mobile:~ informix$ chmod 660 $INFORMIXDIR/dbs/amusarra_ifx.rootdbs amusarra-mobile:~ informix$ chmod 660 /opt/IBM/informix/dbs/amusarra_ifx.rootdbs_mirror

 

Ricordo   che   la   variabile   di   ambiente   INFORMIXDIR   fa   riferimento   alla  directory   d’installazione   del   software   IBM   IDS   Informix,   nel   nostro   caso   la  variabile   INFORMIXDIR  vale:  /opt/IBM/informix.   Le   condizioni   per   inizializzare  la   nostra   istanza   ci   sono   tutte,   procediamo   quindi   con   l’inizializzazione  eseguendo  il  comando:  

amusarra-mobile:~ informix$ oninit -y -i –v

Il   comando   oninit   esegue   l’inizializzazione   dei   dbspaces   e   della   shared  memory   lasciando   on-­line   l’istanza   informix.   L’opzione   –v   indicata   al   comando  oninit  consente  di  vedere  in  output  il  dettaglio  delle  operazioni  eseguite  durante  il  processo  d’inizializzazione  (vedi  Listato  6).    

 

 

 

 

Page 8: Mac$OS$X$Snow$Leopard:$IBM$InformixIDS11.5+PHP5.3...Copyright*©2009*–Antonio*Musarra*–** * Listato’6Partedioutputdelcomandooninit * Checking group membership …

Copyright  ©  2009  –  Antonio  Musarra  –  http://musarra.wordpress.com  

 

Listato  6  Parte  di  output  del  comando  oninit  

 Checking group membership to determine server run mode...succeeded Reading configuration file '/opt/IBM/informix/etc/onconfig.std'...succeeded Creating /INFORMIXTMP/.infxdirs...succeeded Checking config parameters...succeeded Allocating and attaching to shared memory...succeeded Creating resident pool 14708 kbytes...succeeded Allocating 200016 kbytes for buffer pool of 4K page size...succeeded Creating infos file "/opt/IBM/informix/etc/.infos.amusarra_ifx"...succeeded Linking conf file "/opt/IBM/informix/etc/.conf.amusarra_ifx"...succeeded Initializing rhead structure...succeeded Writing to infos file...succeeded Initialization of Encryption...succeeded Initializing ASF...succeeded Forking 1 'soctcp' listener threads...succeeded Forking 1 'soctcp' listener threads...succeeded Forking 1 'ipcshm' listener threads...succeeded Starting tracing...succeeded Initializing 8 flushers...succeeded Initializing log/checkpoint information...succeeded Initializing dbspaces...succeeded Opening primary chunks...succeeded Opening mirror chunks...succeeded Validating chunks...succeeded Creating database partition...succeeded

   

Per   verificare   che   tutto   sia   andato   per   il   verso   giusto,   con   il   data   base   in  modalità  on-­line,  eseguiamo  il  comando:  

amusarra-mobile:~ informix$ onstat –

l’output  dovrebbe  essere  simile  a:  

  IBM Informix Dynamic Server Version 11.50.FC5DE -- On-Line -- Up 00:00:25 -- 250928 Kbytes

 

1.5 Creazione  Stores  Demo  data  base  Da  qualche  minuto  la  nostra  istanza  di   informix  è  on-­‐line,  dovremo  quindi  

creare   almeno   un   data   base   su   cui   poter   effettuare   tutte   le   nostre   prove.  L’installazione   di   IBM   IDS   Informix   comprende   una   serie   di   schemi   demo  completi  di  dati,  noi  utilizzeremo  lo  schema  Stores  Demo.  Per  creare  lo  schema  e  caricare  i  dati  (sempre  come  utente  informix)  eseguiamo  il  comando:  

amusarra-mobile:~ informix$ dbaccessdemo

Per   verificare   che   schema   e   dati   siano   stati   creati   correttamente  eseguiremo  una  connessione  al  data  base  stores_demo  ed  una  query  di  selezione  sulla  tabella  Customer,  procediamo  eseguendo  il  comando:  amusarra-mobile:~ informix$ echo "SELECT * FROM CUSTOMER;" | dbaccess stores_demo -

in  output  il  comando  restituirà  i  record  della  tabella  Customer  del  data  base  stores_demo  (vedi  Listato  7).    

 

Page 9: Mac$OS$X$Snow$Leopard:$IBM$InformixIDS11.5+PHP5.3...Copyright*©2009*–Antonio*Musarra*–** * Listato’6Partedioutputdelcomandooninit * Checking group membership …

Copyright  ©  2009  –  Antonio  Musarra  –  http://musarra.wordpress.com  

 

Listato  7  Output  della  query  sulla  tabella  Customer  

 Database selected. …. customer_num 128 fname Frank lname Lessor company Phoenix University address1 Athletic Department address2 1817 N. Thomas Road city Phoenix state AZ zipcode 85008 phone 602-533-1817 28 row(s) retrieved. Database closed.    

  Adesso  che  abbiamo  l’istanza  Informix  on-­line  e  il  data  base  stores_demo,  il  prossimo   step   consiste   nell’installazione   del   modulo   Informix   per   PHP   5.3,   in  questo   modo   saremo   in   grado   di   poter   accedere   a   Informix   utilizzando   il  linguaggio  di  scripting  più  diffuso  al  mondo.  

 

1.6 PHP  &  Informix  E’   cosa  molto   comune   sentir   parlare   della   coppia   PHP   e  MySQL   o   PHP   e  

PostgreSQL  al  contrario  della  coppia  PHP  e  Informix  quasi  sconosciuta,  assai  rara  nelle   medie   e   piccole   realtà,   forse   sarà   la   natura   commerciale   e   l’ambito   di  utilizzo  di  Informix  a  rendere  la  coppia  meno  nota.    

Dalla  versione  5.2  di  PHP  il  modulo  Informix  non  è  più  disponibile  perché  abbandonato  in  favore  del  modulo  PDO  Informix.  Nel  resto  dell’articolo  vedremo  come   compilare   il   “vecchio”   modulo   Informix   per   renderlo   funzionate   sulla  versione  5.3  di  PHP.  

 

1.6.1 Compilazione  del  modulo  Informix    Il  modulo  Informix  non  è  disponibile  sulla  versione  5.3  di  PHP  installata  di  

serie   sul   nostro   Mac   OS   X,   occorre   quindi   scaricare   i   sorgenti   del   modulo  direttamente  dal  sito  http://pecl.php.net/package/informix.  L’archivio  tar.gz  del  modulo  non  è  disponibile,  non  importa,  eseguiremo  il  checkout  dei  sorgenti  del  modulo  direttamente  dal  repository  SVN  utilizzando  il  comando:  amusarra-mobile:~ informix$ svn co http://svn.php.net/repository/pecl/informix/trunk php_ext_informix

In   questo   modo   otterremo   i   sorgenti   del   modulo   Informix   dentro   la   directory  ~/php_ext_informix.  Nel  Listato  8  è  illustrato  il  risultato  ottenuto  dall’operazione  di  checkout  eseguita  sul  repository  SVN.  

 

Page 10: Mac$OS$X$Snow$Leopard:$IBM$InformixIDS11.5+PHP5.3...Copyright*©2009*–Antonio*Musarra*–** * Listato’6Partedioutputdelcomandooninit * Checking group membership …

Copyright  ©  2009  –  Antonio  Musarra  –  http://musarra.wordpress.com  

 

Listato  8  Risultato  operazione  di  checkout  modulo  Informix.  

 amusarra-mobile:~ informix$ svn co http://svn.php.net/repository/pecl/informix/trunk php_ext_informix A php_ext_informix/config.w32 A php_ext_informix/config.m4 A php_ext_informix/php_informix.h A php_ext_informix/Makefile.frag A php_ext_informix/ifx.dsp A php_ext_informix/ifx.ec A php_ext_informix/CREDITS A php_ext_informix/php_informix_includes.h U php_ext_informix Checked out revision 290780.

   

Spostiamoci  dentro  la  directory  ~/php_ext_informix  e  procediamo  come  da  manuale  alla  compilazione  del  modulo.  

amusarra-mobile:php_ext_informix informix$ phpize amusarra-mobile:php_ext_informix informix$ ./configure

Prima   di   proseguire   con   il  make   del   modulo   è   necessario   modificare   il  Makefile   per   far   in  modo   che   il  modulo   Informix   sia   linkato   correttamente   con  libreria   Informix   checkapi.o,   in   caso   contrario   l'utilizzo   del   modulo   produrrà  l'errore:    

undefined symbol: ifx_checkAPI.

Sul  Makefile   bisogna  aggiungere   l’indicazione  della   libreria  checkapi.o   alla  direttiva  INFORMIX_SHARED_LIBADD:  

/opt/IBM/informix/lib/esql/checkapi.o

A  questo  punto  procediamo  con  la  compilazione  e  installazione  del  modulo  Informix.   L’utente   informix   deve   essere   tra   i   sudores   oppure   è   necessario  eseguire  il  comando  d’installazione  come  utente  root.  

amusarra-mobile:php_ext_informix informix$ make amusarra-mobile:php_ext_informix informix$ sudo make install

Il   modulo   Informix   sarà   installato   in   /usr/lib/php/extensions/no-­debug-­non-­zts-­20090626/.  Per  verificare  il  corretto  link  alla  libreria  Informix  checkapi.o  basta  utilizzare  il  comando  nm  in  coppia  con  il  comando  grep.  L’output  dovrebbe  restituire  l’entry  point  ifx_chekAPI.  

amusarra-mobile:php_ext_informix informix$ nm /usr/lib/php/extensions/no-debug-non-zts-20090626/informix.so | grep checkAPI

000000000000a0a0 T _ifx_checkAPI

 

 

 

 

Page 11: Mac$OS$X$Snow$Leopard:$IBM$InformixIDS11.5+PHP5.3...Copyright*©2009*–Antonio*Musarra*–** * Listato’6Partedioutputdelcomandooninit * Checking group membership …

Copyright  ©  2009  –  Antonio  Musarra  –  http://musarra.wordpress.com  

 

1.6.2 Attivazione  e  test  modulo  Informix  Per   attivare   il   modulo   appena   installato,   è   necessario   modificare   (come  

utente  root)  il  file  di  configurazione  php.ini  (collocato  in  /etc)  e  aggiungere  nella  sezione  extensions  la  direttiva:  

extension=informix.so

E’   possibile   verificare   che   il   modulo   Informix   sia   attivo   eseguendo   il  comando:  

amusarra-mobile:php_ext_informix informix$ php -i|grep Informix Informix support => enabled

Il   comando   ha   risposto   confermando   l’attivazione   del  modulo   Informix,   è  possibile  comunque  utilizzare  l’opzione  –m  del  comando  php  per  verificare  che  il  modulo  sia  attivo.  

In  questo  momento  il  modulo  Informix  è  operativo  solo  se  utilizzato  da  PHP  CLI,  non  è  però  disponibile  in  ambiente  Apache  perché  quest’ultimo  non  vede  le  variabili  di  ambiente  Informix  necessarie  al  corretto  funzionamento  del  modulo.  Dai  file  di  log  di  Apache  (vedi  Listato  9)  è  evidente  come  il  modulo  Informix  non  sia   caricato   a   causa   del   fallimento   nel   caricamento   delle   librerie   informix  richieste  dal  modulo.  La  variabile  DYLD_LIBRARY_PATH  (che  indica  la  posizione  delle  librerie  Informix)  deve  essere  visibile  al  processo  Apache.  

 

Listato  9  Estratto  dai  file  di  log  di  Apache,  evidenza  errore  caricamento  modulo  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: isqls09b.dylib\n Referenced from: /usr/lib/php/extensions/no-debug-non-zts-20090626/informix.so\n Reason: image not found in Unknown on line 0    

In   Mac   OS   X   dalla   versione   10.4   (Tiger),   Apple   ha   introdotto   un   nuovo  sistema  per  l’avvio  dei  servizi  base,  questo  sistema  si  chiama  Launchd.  Il  servizio  Apache   è   quindi   governato   da   Launchd   che   per   motivi   di   sicurezza   azzera   le  variabili   di   ambiente   allo   stretto   indispensabile,   per   questa   ragione   il   modulo  Informix  fallisce  il  caricamento;  le  variabili  di  ambiente  Informix  non  sono  visibili  al   processo   Apache.   La   configurazione   di   Launchd,   o   meglio   del   processo   da  gestire,  avviene  per  mezzo  di  un  file  di  tipo  plist,  mentre  il  file  /etc/launchd.conf  contiene  delle  direttive  (esempio:  comandi  per  il  set  di  variabili  di  ambiente)  per  Launchd.   Il   nostro   obiettivo   è   quindi   quello   di   rendere   visibili   le   variabili   di  ambiente  Informix  al  servizio  Apache,  sul  file  di  configurazione  /etc/launchd.conf  aggiungiamo  le  direttive  illustrate  nel  Listato  10.  

 

 

Page 12: Mac$OS$X$Snow$Leopard:$IBM$InformixIDS11.5+PHP5.3...Copyright*©2009*–Antonio*Musarra*–** * Listato’6Partedioutputdelcomandooninit * Checking group membership …

Copyright  ©  2009  –  Antonio  Musarra  –  http://musarra.wordpress.com  

 

 

Listato  10  Direttive  per  il  set  delle  variabili  di  ambiente  Informix  

setenv INFORMIXDIR /opt/IBM/informix setenv ONCONFIG onconfig.std setenv INFORMIXSERVER amusarra_ifx setenv INFORMIXSQLHOSTS /opt/IBM/informix/etc/sqlhosts setenv DYLD_LIBRARY_PATH /opt/IBM/informix/lib:/opt/IBM/informix/lib/esql:/opt/IBM/informix/lib:/opt/IBM/informix/lib/cli setenv CLIENT_LOCALE en_US.819

 

Con   le   direttive   appena   inserite,   abbiamo   fatto   in   modo   che   i   processi  controllati   da  Launchd  siano  nelle   condizioni  di  poter   accedere  alle   variabili   di  ambiente  Informix.  

A   questo   punto   non   resta   che   riavviare   il   servizio   Apache   con   il   solito  comando   apachectl   (o   da   Preferenze   di   Sistema)   e   verificare   che   il   modulo  Informix   sia   correttamente   caricato,   è   possibile   fare   questa   verifica   con   un  semplice   script   PHP   che   all’interno   abbia   l’istruzione   phpinfo(),   in   Figura   1  l’estratto  della  sezione  Informix.    

 

Figura  1  Esempio  di  phpinfo  con  evidenza  della  configurazione  modulo  Informix.  

       

In  uno  dei  precedenti  paragrafi  abbiamo  caricato  il  data  base  Stores_Demo  sulla  nostra  istanza  Informix,  a  conclusione  di  quest’articolo  faremo  un  semplice  

Page 13: Mac$OS$X$Snow$Leopard:$IBM$InformixIDS11.5+PHP5.3...Copyright*©2009*–Antonio*Musarra*–** * Listato’6Partedioutputdelcomandooninit * Checking group membership …

Copyright  ©  2009  –  Antonio  Musarra  –  http://musarra.wordpress.com  

script  PHP  (vedi  Listato  11)  che  mostra  in  forma  tabellare  i  record  presenti  sulla  tabella  Orders.  

 

Listato  11  Script  PHP  per  la  selezione  dei  record  della  tabella  Orders  

 <?php $conn_id = ifx_connect ("stores_demo@amusarra_ifx", "informix", "password"); $res_id = ifx_query("select * from orders", $conn_id); if (! $res_id) { printf("Can't select orders : %s\n<br />%s<br />\n", ifx_error(),ifx_errormsg()); ifx_close($conn_id); die; } ifx_htmltbl_result($res_id, "border=\"1\""); ifx_free_result($res_id); ifx_close($conn_id); ?>

     

Figura  2  Risultato  dello  script  PHP  di  Listato  11