mit PHP auf eine externe Oracle DB zugreifen
Mike©
- datenbank
0 Bernd0 dedlfix
0 Mike©
0 Andreas Korthaus
Moin @ All
man hat mir die Aufgabe gestellt mit PHP auf eine externe Oracle DB zu zugreifen.
Nun bei lokalen My oder MS DB kein Problem, aber ich bin schon mit Oracle überfordert und jetzt auch extern.
Ich hbae mich 2 Tage lang durch gegoogelt und auch einiges gefunden, aber nichts was so richtig passt und jetzt bin ich ganz konfus.
Aber ich weiß schon mal das in der php.ini die extension für php_oci8.dll und php_oracle.dll eingetragen werden müßen.
Hier mal die Plattformen:
WIN 2000 Advanced WebServer IIS
PHP 4.2.2
Oracle
Version ist 9.2.0.4 / 64bit
HP-UX 11.11
Beide Rechner sind im gleichen Firmennetz.
Jetzt geht es schon gleich beim Verbindungsaufbau los.
$ora_conn = ora_logon("databaseName@service","pass");
Was ist @service? Ein Eintrag in ..system32\drivers\etc\services? Wenn nicht, wie sage ich PHP wo die Oracle DB zu finden ist?
Wo wird den hier im Verbindungsstring das Login mitgegeben?
Danke & regds
Mike©
Hallo,
die Antwort findest Du hier:
XCV. Oracle functions
Siehe auch den thread weiter unten über 'stored procedures'.
Gruss
Bernd
echo $begrüßung;
man hat mir die Aufgabe gestellt mit PHP auf eine externe Oracle DB zu zugreifen.
Aber ich weiß schon mal das in der php.ini die extension für php_oci8.dll und php_oracle.dll eingetragen werden müßen.
Eins von beiden reicht aus. Die oracle.dll ist für die ora_*-Funktionen, die jedoch veraltet sind. Die oci8.dll ist für die oci*-Funktionen zuständig. Wenn der IIS das PHP nach dem Freigeben von Extensions nicht starten möchte, findet er vermutlich die dll-Dateien aus dem gleichnamigen Verzeichnis unterhalb der PHP-Installation nicht. Diese sollten entweder in das Verzeichnis der php.exe (bei Verwendung der CGI-Version) oder auch in das system32-Verzeichnis kopiert/verschoben werden.
Des weiteren benötigt man noch einen Oracle-Client. Mit der Installation desselben müssten sich die Oracle-Betreuer in deiner Firma auskennen. In diesem Zusammenhang ist eine gewisse Konfigurationsdatei des Clients namens tnsnames.ora von Bedeutung, denn da sollten die Verbindungsparameter zu den Datenbanken drin stehen.
$ora_conn = ora_logon("databaseName@service","pass");
Was ist @service?
Wo wird den hier im Verbindungsstring das Login mitgegeben?
Wenn schon ora_logon, dann ora_logon('username@tnsname', 'pass');
Wenn nicht, wie sage ich PHP wo die Oracle DB zu finden ist?
Siehe oben (tnsnames.ora), der Client muss das wissen.
echo "$verabschiedung $name";
Moin dedlfix,
Des weiteren benötigt man noch einen Oracle-Client. Mit der Installation desselben müssten sich die Oracle-Betreuer in deiner Firma auskennen. In diesem Zusammenhang ist eine gewisse Konfigurationsdatei des Clients namens tnsnames.ora von Bedeutung, denn da sollten die Verbindungsparameter zu den Datenbanken drin
vielen Dank, ich habe soeben auch die Einträge für die tnsnames.ora bekommen und wußte nicht wo ich die hin packen soll :-/ Jetzt weis ich es: 'Oracle-Client'
regds
Mike©
Hallo!
man hat mir die Aufgabe gestellt mit PHP auf eine externe Oracle DB zu zugreifen.
OK, dann wären die erste Anlaufpunkte evtl:
PHP Developer Center von Oracle (OTN)
http://www.oracle.com/technology/tech/php/index.html
Auf der Seite findest Du sehr viele Artikel die Dir helfen sollten.
Und der Abschnitt des PHP-Manuals über die OCI8 Extension:
http://de3.php.net/manual/en/ref.oci8.php (englisch Version ist aktueller!)
Und wenn Du einer schönere (und nebenbei Datenbankunabhängige) API möchtest, würde ich PHP Data Objects (PDO) empfehlen:
http://de3.php.net/pdo
http://www.oracle.com/technology/pub/articles/php_experts/otn_pdo_oracle5.html
http://wiki.cc/php/PDO
Allerdings scheint es im Moment nur die DLLs für PHP 5.1 zu geben (und darin sind sie ja sowieso enthalten):
http://pecl4win.php.net/ext.php/php_pdo.dll
http://pecl4win.php.net/ext.php/php_pdo_oci.dll
Auf Linux/Unix funktioniert das auch mit PHP 5.0.
Aber ich weiß schon mal das in der php.ini die extension für php_oci8.dll und php_oracle.dll eingetragen werden müßen.
Nein, entweder die neue php_oci8.dll oder die veraltete php_oracle.dll. Letztere wird in neusten PHP-Versionen schon gar nicht mehr mitgeliefert.
Eine Alternative zu diesen PHP-Extensions wäre die neue Standard DB-Abstraktions PDO (hierfür bräuchtest Du php_pdo.dll und php_pdo_oci.dll). Die ist ab PHP 5.1 auch in der PHP-Distribution enthalten.
Hier mal die Plattformen:
WIN 2000 Advanced WebServer IIS
PHP 4.2.2
Die PHP-Version ist schon sehr alt (>3 Jahre) und enthält zahlreiche Sicherheitslücken. PDO kannst Du damit natürlich nicht nutzen.
$ora_conn = ora_logon("databaseName@service","pass");
Was ist @service? Ein Eintrag in ..system32\drivers\etc\services? Wenn nicht, wie sage ich PHP wo die Oracle DB zu finden ist?Wo wird den hier im Verbindungsstring das Login mitgegeben?
Wie gesagt, die Oracle Extension mit den ora_* Funktionen (php_oracle.dll) ist veraltet und sollte nicht mehr verwendet werden. Abgesehen davon funktioniert diese Extension mit neueren Oracle-Versionen schon gar nicht mehr. Verwende stattdessen die OCI8 Extension, wie oben verlinkt.
Dann lies Dir die Beschreibung im Manual (englische Variante!) durch, da steht schon einiges wie man das einrichtet, und sonst helfen Dir die OTN-Artikel, -FAQ... (wie ganz oben verlinkt).
Grüße
Andreas