Freitag, 20. August 2010

Windows 7 64 Bit, der Oracle Instantclient und PHP

Leider bringt ein 64 Bit System an einigen Stellen einen höheren Konfigurationsaufwand mit sich. Das habe ich heute mal wieder sehr deutlich gemerkt.

Meine Ausgangskonfiguration war Windows 7 mit einer 64 Bit Java Version und Oracle SQL Developer in der 64 Bit Version. Ein Oracle Instantclient (Version 11.2) war auch in der 64 Bit Version installiert. Den Instantclient benötigt man, um auf eine entfernte Oracle Datenbank zuzugreifen. Diese Konfiguration funktionierte einwandfrei.

Heute habe ich es in Angriff genommen, XAMPP zu installieren. Die aktuelle Version von XAMPP war schnell heruntergeladen. Da es XAMPP aktuell nur in einer 32 Bit Version gibt, ahnte ich schon, daß das Zusammenspiel von PHP und Oracle nicht so einfach funktioniert. Um die Oracle Extension oci8 (php_oci8.dll) zu aktivieren, muß bei dem entsprechenden Eintrag in der php.ini das Semikolon entfernt werden. Nach einem Neustart des Apache Webservers meldete sich dieser dann aber mit eine Fehlermeldung: Der Prozedureinsprungpunkt von oci.dll wurde nicht gefunden. Folglich wurde die Oracle Extension nicht geladen. Nach einigen erfolglosen Versuchen PHP mit Oracle ans Laufen zu kriegen, installierte ich den Instantclient in der Version 10.3 als 32 Bit Version. Da ich mich mit einer 10gR2 Oracle Datenbank verbinden wollte, sollte dieser auch funktionieren. Erstaunlicherweise funktionierte er auch mit dem SQL Developer. Nach einem Neustart des Apache erschien aber wieder eine Fehlermeldung. Eine Datei, die nach ich nach einer kurzen Google Suche dem .NET Framework 1.1 zuordnen konnte, sollte fehlen. Das Ergebnis war, daß die Oracle Extension wieder nicht geladen wurde. Als letzten Versuch installierte ich den neuesten Instantclient, den ich ja schon vorher benutzt hatte. Nur jetzt in der 32 Bit Version. Nach einem Neustart des Apache wurde die Oracle Extension in PHP endlich richtig geladen.

Fazit: Eine 32 Bit PHP Version mit der Oracle Extension oci8 funktioniert anscheinend nur mit einem 32 Bit Oracle Instantclient. Der Oracle SQL Developer in der 64 Bit Version funktioniert aber mit einem 32 Bit Oracle Instantclient.