phpbar.de logo

Mailinglisten-Archive

[php] PHP4 unter NT mit Oracle(oci) <Es funktioniert!>

[php] PHP4 unter NT mit Oracle(oci) <Es funktioniert!>

Joerg Behrens behrens_(at)_takenet.de
Wed, 23 Aug 2000 17:51:47 +0200


Moin,moin liebe Liste

nach langem Ringen ist es mir nun endlich gelungen mit dem 'Monster'
namens Oracle die ersten Streicheleinheiten auszutauschen. 

Moeglich war es nur weil es fuer uns Windowssympathisanten unter
www.php4win.de ein kompilat mir vielen Modulen fuer die ganzen PHP
Varianten gibt :)!

War es unter Linux ein leichtes artete es unter Windows zu einer nicht
enden wollenden Geschichte aus. Da es aber mit PHP3 auf Anhieb klappte
und laut unbestaettigten Geruechten es auch schon einige andere mit PHP4
geschafft hatten gab ich die Hoffnung nicht auf.

Probiert hab ich auf einem Schlepptop unter NT WKS 4.0 SP5. Als
Webserver kam der IIS4.0(Begruendung siehe unten) aus dem NT OptionPack
4.0 zum Einsatz. Probiert wurde mit dem 'php4.0.2-dev with apache module
[cvs: 2000-08-16] + php4.0.2-dev maintenance zip for [cvs: 2000-08-16]
only!' Package.

Als Oracleclient diente der von der Oracle 8.0.4.0 CD. Das neuste was
wir im Hause gehabt haetten waere 8.0.5.0.0 gewesen und ich bezweifle
das man bei Oracle nen Client ueber deren Webseiten downlöoaden kann.
Wenn man sich deren Performance anschaut koennte man meinen deren Server
sind mittels eines Klingeldrahtes ans Netz angebunden.

Nach dem einrichten war war es kein Probs mittels sqlplus an oracle zu
connecten. Dann wurde ueber die 'Systemsteuerung | System | Umgebung'
folgende Variablen angelegt:
- NLS_LANG = GERMAN_GERMANY.WE8ISO8859P1 
- ORACLE_SID = ORCL
- ORACLE_HOME = d:\Orant 

Diese Angaben sind dann in der phpinfo() Ausgabe (nur IIS!!) unter
Environment zusehen. Das installieren von php4 war ansich kein Problem
bis auf den Standort der php.ini Datei !.
Waehrend
Funktioniert = IIS+ISAPI + <%windir%/system32>
Funktioniert = Apache+mod_php + <%windir%/system32>
Funktioniert = Apache+CGI-PHP + c:\php4 // Installverzeichis von PHP4

klappte, ging folgendes nicht:
Funktioniert NICHT = IIS+CGI-PHP.

Fuer diese Kombi habe ich keinen Standort gefunden. Und ohne php.ini
lies sich natuerlich kein Modul aktivieren. Bis dato war ich immer der
Meinung ein guter Platz fuer die php.ini waere im <%windir> Verzeichnis.
Generationen von PHP3 Installationen waren so gluecklich. Dem war hier
definitiv nicht so!

Das einbinden des ISAPI Modul lief wie der README beschrieben und sollte
dank 'KlickiBuntiInterface' des InternetDienstManager kein Problem
darstellen. Das neustarten (gerade wer spaeter an der php.ini fummelt)
ging ueber das Interface nicht zufrieden stellend. Sicher geht der
jenige der mittels Konsole 'net stop iisadmin' und 'net start w3svc'
bzw. den Rechner Rebootet.

Aktiviert wurde NUR die php_oci8.dll um andere Fehlerquellen
zuminimieren sowie ein paar Anpassungen errorlog, extension_dir .. das
uebliche halt.

Leider interessierte sich der Apache nicht fuer das Environment :( Ein
einfuegen von 'SetEnv ORACLE_SID ORCL'(usw.)im Abschnitt 'Main
Configuration' in die httpd.conf aenderte zwar diesen Sachverhalt,
zeigte aber keine Auswirkungen auf den Oracleconnect ' Fehler: Kann TNS
Names nicht aufloesen (so oder aehnlich)'. Somit blieb letztendlich nur
der IIS+ISAPI ueber.

Mit folgendem Script klappte dann die 'Streicheleinheiten':
<?php
// Connectparameter
$usr = "user";
$passwd = "passwort";
$tns = "ora-2";

echo "<br>";
echo date("d.m.Y ,H:i:s");

$con = ocilogon($usr,$passwd,$tns);
echo "<br>$con<br>";
$query = "select * from vi_zeichnung where bearbeiter = 'beh'";
$stmt = ociparse($con,$query);
ociexecute($stmt);

// Ausgabe
echo "<pre>";
for($i=1;ocifetchinto($stmt,$result);$i++) {
    echo "Nr. $i<br>";
    while(list($k,$v)=each($result)) {
    	echo "$k => $v\n";
    }
	echo "<br>\n";
	flush();
}
echo "</pre>";
?>

Beim Arbeiten mit dem IIS+IASPI erscheint sehr haufig die Meldung
'Prozeduraufruf schlug fehl' im Browserfenster. Ein klick auf Reload im
Browser behob das Problem immer. Das ein oder andere Mal legte er sich
dann aber ganz quer und meldete 'Servererror'. Hier half dann nur der
Neustart des Webservers ueber die Konsole.

Mein Dank geht nun an die 'Rasselbande' fuer das Windowskompilat und an
alle die sich noch so angesprochen fuehlen.

Gruss
Joerg <der sich schon auf eine php_oracle.dll freut> Behrens

ps: Andreas und Daniel, sollte ich mich doch dazu durchringen nach Koeln
zukommen wuerde ich mich freuen mich an der Zeche beteiligen zukoennen.
Das schroepft den jungen blonden norddeutschen Jung dann auch nicht so
:) Und ob Koelsch,Pils oder beer.. Hauptsache es schauemt !:)

-- 
Key fingerprint =  92 7D E0 A6 CF AE EC 32  14 28 EF 0D 57 2A 88 5B
----------------------------------------------------------------------
TakeNet GmbH					Mobil: 0171/60 57 963			
D-97080 Wuerzburg				Tel: +49 931 903-2243				
Alfred-Nobel-Straße 20				Fax: +49 931 903-3025


php::bar PHP Wiki   -   Listenarchive