Mailinglisten-Archive |
> From: jan.viaccava_(at)_stone-eca.de > Hi Leute, > > Ich habe ein Problem im Zusammenspiel von Apache, PHP und Oracle. > Auf einem Linux-Rechner (Red-Hat 6.0) ist ein Apache-Webserver mit PHP > installiert. Von hier aus möchte ich einen Zugriff auf eine entfernt > liegende Oracle 7.3.4.4-Datenbank auf einem HP-UX-Server schaffen. > Dabei meldet PHP immer : > Fatal error: Call to unsupported or undefined function ora_open() in > /apache/php3/speichern2.php3 on line 10 > > Wie kann ich die entsprechenden Oracle-Funktionen einbinden ??? Moin,moin dazu musst du auf deiner Kiste den Oracle-Client installieren und anschliessend PHP neu compilieren. Der Client ist immer notwendig um sich mit einer Oracle-DB zu unterhalten selbst wenn die DB auf deinem Webserver direkt mitlaufen wuerde. Solltest du das ./setup von PHP ausfuhren die Frage mit Oracle Support mit Yes beantworten sowie den Pfad angeben. Evtl. lohnt auch mal ein Blick in die engl. Mailingliste... da wird ofter ueber Oracle und PHP gesprochen als hier. Die Anhaenger des "Winzigweichs Clan" haben es hier ein bisschen einfacher. Der Client ist einfach zuinstallieren und PHP bringt die passende *.DLL mit. Komischer Weise steht sie nicht in der PHP3.INI, also flux eintragen "extension=php3_oci73.dll". Folgendes Script sollte dir den Inhalt einer Tabelle bzw. View an. Funktion zum "weiterblaettern" ist eingebaut sowie Statusmonitor mit Tabellenname, Nummer der Spalten und Anzeige von bis... Anmerk. Ich nummiere die Spalte von 1-x durch, also nicht irritieren lassen, das sind keine Infos aus der Datenbank. <?php if($select == "") $sql_daten = "SELECT * FROM udb.vw_zeichnung_php"; // Hier Name der Tabelle/View angeben else $sql_daten = $select; if(($von == "") or ($von < 0)) $zeile_erste = 1; else $zeile_erste = $von; if(($max == "") or ($max < 0)) $zeilen_anzeigen = 10; // Anzeige der max. Zeilen pro Seite else $zeilen_anzeigen = $max; putenv("ORACLE_SID=orcl"); putenv("ORACLE_HOME=d:\orant"); // Pfad gegebenfalls anpassen $user_name = "prinz"; // Loginname setzen $user_pwd = "prinz"; // Passwort $user_tns = "_(at)_ora-2"; // TNS Name $anmeldung = ora_logon($user_name . $user_tns,$user_pwd); ora_commitoff($anmeldung); $cursor_daten = ora_open($anmeldung); ora_parse($cursor_daten,$sql_daten); ora_exec($cursor_daten); $spalten_gesamt = 0; $spalten_gesamt = ora_numcols($cursor_daten); $zeile_nummer = 0; $zeilen_angezeigt = 0; echo "<TABLE BORDER=1>\n"; echo " <TR>\n "; echo "<TD>Nummer</TD>"; for ($spalte_aktuell=0; $spalte_aktuell < $spalten_gesamt; $spalte_aktuell++) { $spalte_name = trim(ora_columnname($cursor_daten,$spalte_aktuell)); echo ('<TD ALIGN="'.CENTER.'">'); echo "$spalte_name"; echo "</TD>"; } echo "\n </TR>\n"; while(($zeile_nummer < $zeile_erste - 1) and (ora_fetch($cursor_daten))) $zeile_nummer++; if($zeile_nummer == $zeile_erste - 1){ while(($zeilen_angezeigt < $zeilen_anzeigen) and (ora_fetch($cursor_daten))) { $zeile_nummer++; $zeilen_angezeigt++; echo " <TR>\n "; echo ('<TD ALIGN="'.RIGHT.'">'); echo "$zeile_nummer"; echo "</TD>"; for ($spalte_aktuell=0; $spalte_aktuell < $spalten_gesamt; $spalte_aktuell++) { $spalte_wert = trim(ora_getcolumn($cursor_daten, $spalte_aktuell)); $spalte_typ = ora_columntype($cursor_daten, $spalte_aktuell); if($spalte_wert == "") $spalte_wert = " "; if($spalte_typ == "NUMBER") $spalte_ausrichtung = "RIGHT"; else $spalte_ausrichtung = "LEFT"; echo ('<TD ALIGN="'.$spalte_ausrichtung.'">'); echo "$spalte_wert"; echo "</TD>"; } echo "\n </TR>\n"; } } $spalten_gesamt++; if($zeilen_angezeigt == 0) { echo " <TR>\n "; echo ('<TD COLSPAN="'.$spalten_gesamt.'" ALIGN="CENTER">(keine Daten gefunden)</TD>'); echo "\n </TR>\n"; } echo "</TABLE>\n\n<P>\n\n"; $zeile_minus = $zeile_erste - $zeilen_anzeigen; $zeile_plus = $zeile_erste + $zeilen_anzeigen; echo "<TABLE BORDER=1>\n"; echo " <TR>\n"; if($zeile_erste > 1) echo (' <TD><A HREF="http://wu-ex-test/oracle/oracle7.htm?select='.ereg_replace(" ","+",$sql_daten).'&von=1&max='.$zeilen_anzeigen.'">Anfang</A></TD>'); else echo " <TD>Anfang</TD>"; if($zeile_minus > 0) echo (' <TD><A HREF="http://wu-ex-test/oracle/oracle7.htm?select='.ereg_replace(" ","+",$sql_daten).'&von='.$zeile_minus.'&max='.$zeilen_anzeigen.'">- '.$zeilen_anzeigen.'</A></TD>'); else echo " <TD>- $zeilen_anzeigen</TD>"; echo (' <TD><A HREF="http://wu-ex-test/oracle/oracle7.htm?select='.ereg_replace(" ","+",$sql_daten).'&von='.$zeile_plus.'&max='.$zeilen_anzeigen.'">+ '.$zeilen_anzeigen.'</A></TD>'); echo "\n </TR>\n"; echo "</TABLE>\n\n<P>\n\n"; echo "<TABLE BORDER=1>\n"; echo "<TR><TD>SQL Abfrage</TD><TD>$sql_daten</TD></TR>\n"; echo "<TR><TD>Spalten</TD><TD>$spalten_gesamt</TD></TR>\n"; echo "<TR><TD>Zeilen</TD><TD>$zeile_erste bis $zeile_nummer</TD></TR>\n"; echo "<TR><TD>Anzeige</TD><TD>$zeilen_angezeigt Zeilen (maximal $zeilen_anzeigen)</TD></TR>\n"; echo "</TABLE>\n\n"; ora_close($cursor_daten); /* Ausloggen */ Ora_Logoff($anmeldung); ?> MfG Joerg Behrens Key fingerprint = 92 7D E0 A6 CF AE EC 32 14 28 EF 0D 57 2A 88 5B ---------------------------------------------------------------------- Preussag Noell Dienstleistungs GmbH D-97080 Wuerzburg Alfred-Nobel-Straße 20 Tel: +49 931 903-2243 Abt: DV-C/tr Fax: +49 511 903-2051
php::bar PHP Wiki - Listenarchive