PHP+DB2 mit PEAR IBM_DB2-Modul auf Linux?

Hallo,

Hat jemand bereits erfolgreich eine DB2-Datenbank über PHP/IBM_DB2 verbunden? Ich soll eine DB2 aus PHP heraus ansprechen indem ich das PEAR IBM_DB2 Modul verwende. Unter Windows klappt das. Irgendwie weiss ich aber nicht, welche Linux-Setups (DB2-CLient?) ich verwenden soll. Unter Windows habe ich dann einen DSN eingerichtet. Wie mache ich das dann unter Linux (Suse 10)?

Hat da jemand Erfahrung mit?

Grüsse

Kukulkan

Ich habe zwar keine Erfahrungen damit, aber ich probier’s mal Dir weiter zu helfen.

Was Du brauchst ist ein PHP mit DB2-Unterstuetzung. Dafuer gibt es soweit ich gesehen habe 2 Module:
ibm-db2 - dieses greift wohl auf das DB2-CLI-Interface zurueck http://de.php.net/manual/de/ref.ibm-db2.php
und PDO_ODBC, welches auf DB2 ueber das ODBC-Interface verbindet. http://de.php.net/manual/de/ref.pdo-odbc.php

Beides ist afaik bei keiner Distribution als Modul kompiliert oder muss wenn dann nachtraeglich installiert werden.

Hilfe zur PHP-Kompilierung erhaelst Du im PHP-Handbuch, die entsprechenden Schalter dafuer in den jeweiligen Modulbeschreibungen im PHP-Handbuch. -> http://de.php.net/manual/de

Gruss
Stefan

Ich habe zwar keine Erfahrungen damit, aber ich probier’s mal
Dir weiter zu helfen.

Hallo Stefan,

Vielen Dank für deine ausführliche Hilfe. Aber so weit sind wir leider auch schon. Um auf DB2 zuzugreifen haben wir bereits unter Windows das PEAR Modul IBM_DB2 verwendet. Das funktioniert auch ganz gut. Unter Linux kann ich das mit

sudo pecl install ibm_db2

installieren und in der PHP.INI auch eintragen.

Die Frage ist vielmehr, was von IBM DB2 muss ich auf dem Client installieren (Datenbank ist nicht auf dem selben Server und soll da auch nicht installiert werden. Wenn, dann nur ein Client bzw. Treiber) und wie muss ich die Verbindung konfigurieren. Unter Windows hat man einen System-DSN angelegt und diesen dann bei db2_connect() angegeben. Nur unter Linux will das nicht so klappen.

Kukulkan

Unter Windows hat man einen System-DSN angelegt
und diesen dann bei db2_connect() angegeben. Nur unter Linux
will das nicht so klappen.

was hast du fuer angaben entspr. dem abschnitt „For an uncataloged connection to a database …“ unter http://de.php.net/manual/de/function.db2-connect.php angegeben?

was hast du fuer angaben entspr. dem abschnitt „For an
uncataloged connection to a database …“ unter
http://de.php.net/manual/de/function.db2-connect.php
angegeben?

Hallo,

So greife ich über Windows zu.

# DB2
define('DBDATABASE', "MY\_DATABASE");
define('DBUSER', "username"); 
define('DBPASSWORD', "password");

# woanderst wird dann geöffnet
$options = array('autocommit' =\> DB2\_AUTOCOMMIT\_ON);
$this-\>connection = db2\_connect(DBDATABASE, DBUSER, DBPASSWORD, $options);
if (is\_resource($this-\>connection) == false) {
 error\_log("can not connect DB2 database " . DBDATABASE . " using " . DBUSER . "/" . DBPASSWORD);
}

Ichhabe einen System-DSN mit Namen „MY_DATABASE“ konfiguriert. Allerdings ist auf diesem Server auch die DB2 installiert gewesen. Desshalb waren die Datenbank-Treiber vorhanden. Aber auf einem Linux ohne DB2 Datenbank sind die ja nich da. Aber wie bekomm ich die drauf? Und wo konfiguriert man das gegenstück zu Windows DSN’s?

Kukulkan

was hast du fuer angaben entspr. dem abschnitt „For an
uncataloged connection to a database …“ unter
http://de.php.net/manual/de/function.db2-connect.php
angegeben?

gewesen. Desshalb waren die Datenbank-Treiber vorhanden. Aber
auf einem Linux ohne DB2 Datenbank sind die ja nich da. Aber
wie bekomm ich die drauf?

http://www-306.ibm.com/software/data/db2/ad/php.html

Und wo konfiguriert man das gegenstück zu Windows DSN’s?

afaik gar nicht, wie oben schon drauf hingewiesen und hier nochmal: „For an uncataloged connection …“ http://de.php.net/manual/de/function.db2-connect.php