Mike© : mit PHP auf eine externe Oracle DB zugreifen

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©

--
Freunde kommen und gehen. Feinde sammeln sich an.
  1. Hallo,

    die Antwort findest Du hier:
    XCV. Oracle functions

    Siehe auch den thread weiter unten über 'stored procedures'.

    Gruss

    Bernd

  2. 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";

    1. 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©

      --
      Freunde kommen und gehen. Feinde sammeln sich an.
  3. 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

    --
    SELFHTML Feature Artikel: http://aktuell.de.selfhtml.org/artikel/