oci8 PHP Modul

Jetzt müssen Sie noch Oracle und PHP verbinden. Hierzu ist das PHP Modul oci8 zu installieren. Leider liegt dieses nicht vorkompiliert oder gar als .deb Paket vor.

Oracle Instant Client installieren 

Falls Sie die Oracle Datenbank auf dem Webserver installiert haben, können Sie direkt das oci8 PHP Modul kompilieren

Ubuntu / Debian:

Erweitern Sie die Quellen indem Sie

deb http://oss.oracle.com/debian unstable main non-free

der Datei /etc/apt/source.list anhängen.

Dann kann der Client wie folgt installiert werden:

apt-get update

apt-get install oracle-xe-client

Andere Linux-Distributionen:

Laden sie die Basic und SDK Pakete des Oracle Instant Client von http://www.oracle.com/technology/tech/oci/instantclient/index.html herunter. Um die Verbindung zu testen, kann man auch noch SQL Plus installieren.

Erstellen Sie das Verzeichnis /opt/oracle/instantclient, in das Sie die Oracle Instant Client Archive entpacken.

# mkdir -p /opt/oracle/instantclient
# cd /opt/oracle/instantclient
# unzip instantclient-basic-linux32-10.2.0.3-20061115.zip
# unzip instantclient-sdk-linux32-10.2.0.3-20061115.zip

Alle:

Nun müsen noch symbolische Links in dem neuen Verzeichnis angelegt werden.

# ln -s libclntsh.so.10.1 libclntsh.so
# ln -s libocci.so.10.1 libocci.so

Außerdem muss noch der Oracle Bibliothekspfad bekannt gegeben werden.

# sudo vi /etc/ld.so.conf.d/oracle.conf 
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib
# sudo ldconfig 

Modul kompilieren 

Um das PHP Modul kompilieren zu können, werden die PEAR Pakete und PHP5 Quellen benötigt.

# apt-get install php-pear php5-dev
#
pecl install oci8

Bei der Frage nach dem ORACLE_HOME Verzeichnis geben Sie entweder das Verzeichnis der Datenbankinstallation "/usr/lib/oracle/xe/app/oracle/product/10.2.0/server" oder im Falle des Oracle Instant Client das Verzeichnis "/usr/lib/oracle/xe/app/oracle/product/10.2.0/client" bzw. "instantclient,/opt/oracle/instantclient" an. Geben Sie zuvor "all" ein, um die Einstellung vornehmen zu können.

Jetzt müssen Sie nur noch das Modul oci8.so in der php.ini aktivieren, wo sich diese befindet, erfahren Sie am besten aus der phpinfo, und den Apache neu starten.

# echo "extension=oci8.so" >> /etc/php5/apache2/php.ini # echo "extension=oci8.so" >> /etc/php5/cli/php.ini # ldconfig /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib # apache2ctl restart

Sie können natürlich auch einen Texteditor Ihrer Wahl verwenden.

Über die phpinfo Ausgabe können Sie kontrollieren, ob die Konfiguration funktioniert.

Mit Hilfe des folgenden PHP Skripts können Sie prüfen, ob die Verbindung mit Oracle funktioniert:

<?php
putenv('ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/');
$oracle = oci_connect('egotec', 'egotec', '//localhost/XE');

if (!$oracle)
{
    $e = oci_error();
    print htmlentities($e['message']);
    exit;
}
?>
<h1>Oracle Verbindung</h1>

APACHE konfigurieren damit oci8 immer mit gestartet wird

 # sudo vi /etc/ld.so.conf.d/oracle.conf

dort folgenden Inhalt  einfügen:

 # libc default configuration /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib

und speichern