Oracle-Support fürPHP 4.x (auf SuSE)
Oracle-Support fürPHP 4.x (auf SuSE)
am 11.05.2006 00:03:29 von volker
Hallo,
ich hab da ein Problem:
Ich soll auf einer Kundenmaschine (SuSE 9.irgendwas Enterprise), auf der
suse-mäßig ein Apache mit PHP installiert ist, dafür sorgen, daß das PHP
auf eine Oracle Datenbank zugreifen kann.
Vor Jahren (war wohl letztes Jahrtausend) habe ich sowas schon mal gemacht
(nach Kochrezept) und erinnere mich mit Grausen daran.
Nun lese ich im Web die unterschiedlichsten Aussagen:
- Man muß PHP neucompilieren
- Man muß den Apachen _und_ PHP neu compilieren
- Man muß nur einem Hilfstool (da kam was von PECL vor) das Oracle
vorwerfen und (Abrakadabra und dreimal gen Mekka gewandt) hat man
ein .so-File, daß man ins PHP einbinden kann.
Und was ist nun richtig?
Ich erwarte jetzt nicht, das mir eine Gute Fee in zwei Minuten ein
Oracle-fähiges PHP auf dem Rechner zaubert, aber ich würde gerne mal wissen
wo's denn langgeht. Wenn ich jetzt nur nach einer Web-Recherche einfach
loslege, sehe ich folgende Probleme:
- Wie erwische ich unter den zig Anleitungen, die im Web zu Finden sind,
eine, die heute noch - und vor allem für diese Konstellation - gültig
ist. Ich muß die Versionen noch mal verifizieren aber ich gehe davon
aus, daß es ein Apache 2.x und ein PHP 4.3.x ist. Die Oracle ist eine
'10g', aber ob 10, 9 oder 8 ist wohl für einen Client egal (hoffe ich).
- Wenn ich das PHP neu compiliere, wo finde ich dann eine Anleitung mit
welchen Switchen das ursprüngliche PHP compiliert war, damit ich dann
noch den '--with-oci8' hinzufügen kann. Sonst habe ich hinterher ein
PHP, das wunderschön auf Oracle zugreifen kann, aber ansonsten doof wie
Brot ist, weil ich tausend andere Sachen vergessen habe, die man
üblicherweise braucht. Einen Linux-Kernel kompiliere ich ja auch nur mit
der Modifikation einer getesteten Konfiguration und nicht from-scratch.
- Der Kunde hat von Linux unwesentlich mehr Ahnung als ein Dackel vom
Klavierspielen. Deshalb hat er sich das SuSE-Linux von einer Firma,
die davon Ahnung haben soll, aufspielen lassen. Wenn ich da jetzt ein
selbstkompiliertes PHP draufspiele, bügeln die mir doch beim erstem
Aufruf von Yast mit anschließen suseconfig alles wieder über.
Solche - und ähnliche - Späße waren der Grund, warum ich für meinen
Hausgebrauch vor fünf Jahren von SuSE zu Debian gewechselt bin.
Ergänzend möchte ich noch bemerken, das ich eigentlich ganz glücklich - und
auch vollständig ausgelastet - damit bin, Anwendungen zu programmieren
(derzeit in Java, PHP und Perl) und Installation und Konfiguration von
Betriebssystemen und Standardtools nur als notwendiges Übel ansehe. Ich
bitte daher, meine Unwissenheit und mangelnde Begeisterungsfähigkeit für
diese Themen zu entschuldigen. Ich installiere normalerweise, wo immer es
geht, fertige Linux-Pakete und greife - außer bei eigenen Programmen - nur
zum Compiler, wenn es sich nicht vermeiden läßt.
Aber dies ist wohl so ein Fall.
Ich hoffe, ihr könnt mich auf den rechten Weg geleiten.
mfg Volker
Re: Oracle-Support für PHP 4.x (auf SuSE)
am 11.05.2006 00:29:35 von Johannes Vogel
Hi Volker
Netter Roman.. :-)
Volker Boehm wrote:
> Ich soll auf einer Kundenmaschine (SuSE 9.irgendwas Enterprise), auf der
> suse-mäßig ein Apache mit PHP installiert ist, dafür sorgen, daß das PHP
> auf eine Oracle Datenbank zugreifen kann.
> Vor Jahren (war wohl letztes Jahrtausend) habe ich sowas schon mal gemacht
> (nach Kochrezept) und erinnere mich mit Grausen daran.
> Nun lese ich im Web die unterschiedlichsten Aussagen:
Quellenangabe?
> - Man muß PHP neucompilieren
> - Man muß den Apachen _und_ PHP neu compilieren
> - Man muß nur einem Hilfstool (da kam was von PECL vor) das Oracle
> vorwerfen und (Abrakadabra und dreimal gen Mekka gewandt) hat man
> ein .so-File, daß man ins PHP einbinden kann.
> Und was ist nun richtig?
Ich würde mal hier beginnen: www.php.net/oracle
Da steht "You have to compile PHP with the option --with-oracle[=DIR],
where DIR defaults to your environment variable ORACLE_HOME."
Natürlich könnte ja irgendwo ein Binary rumliegen, das mit dieser Option
erstellt wurde. Aber darauf würde ich mich nicht verlassen.
Als nächstes die Frage, ob Apache neu kompiliert werden muss:
www.php.net/manual/en/install.unix.apache2.php
Hier wird erst Apache kompiliert und installiert, bevor PHP überhaupt
auf die Platte kommt. Also sollte es ja auch mit fertig installiertem
Apache laufen. Davon ausgegangen, dass da --enable-so drin ist. Wie du
dann das neue PHP dem Apache beibringst, findest du ebenfalls auf dieser
Seite (Punkt 14 im grauen Kasten).
> - Wie erwische ich unter den zig Anleitungen, die im Web zu Finden sind,
> eine, die heute noch - und vor allem für diese Konstellation - gültig
> ist. Ich muß die Versionen noch mal verifizieren aber ich gehe davon
> aus, daß es ein Apache 2.x und ein PHP 4.3.x ist. Die Oracle ist eine
> '10g', aber ob 10, 9 oder 8 ist wohl für einen Client egal (hoffe ich).
www.php.net/manual/en/
> - Wenn ich das PHP neu compiliere, wo finde ich dann eine Anleitung mit
> welchen Switchen das ursprüngliche PHP compiliert war, damit ich dann
> noch den '--with-oci8' hinzufügen kann. Sonst habe ich hinterher ein
> PHP, das wunderschön auf Oracle zugreifen kann, aber ansonsten doof wie
> Brot ist, weil ich tausend andere Sachen vergessen habe, die man
> üblicherweise braucht. Einen Linux-Kernel kompiliere ich ja auch nur mit
> der Modifikation einer getesteten Konfiguration und nicht from-scratch.
../configure --help
> - Der Kunde hat von Linux unwesentlich mehr Ahnung als ein Dackel vom
> Klavierspielen. Deshalb hat er sich das SuSE-Linux von einer Firma,
> die davon Ahnung haben soll, aufspielen lassen. Wenn ich da jetzt ein
> selbstkompiliertes PHP draufspiele, bügeln die mir doch beim erstem
> Aufruf von Yast mit anschließen suseconfig alles wieder über.
> Solche - und ähnliche - Späße waren der Grund, warum ich für meinen
> Hausgebrauch vor fünf Jahren von SuSE zu Debian gewechselt bin.
SuSE kenn ich kaum. Genau wegen obiger Aussage kann ich es nicht ausstehen.
> Ergänzend möchte ich noch bemerken, das ich eigentlich ganz glücklich - und
> auch vollständig ausgelastet - damit bin, Anwendungen zu programmieren
> (derzeit in Java, PHP und Perl) und Installation und Konfiguration von
> Betriebssystemen und Standardtools nur als notwendiges Übel ansehe. Ich
> bitte daher, meine Unwissenheit und mangelnde Begeisterungsfähigkeit für
> diese Themen zu entschuldigen. Ich installiere normalerweise, wo immer es
> geht, fertige Linux-Pakete und greife - außer bei eigenen Programmen - nur
> zum Compiler, wenn es sich nicht vermeiden läßt.
> Aber dies ist wohl so ein Fall.
Geht mir nicht gross anders. Irgendwann war's mir aber zu bunt für
Fremdsysteme zu entwickeln und habe kurzerhand einen eigenen Webserver
für meine speziellen Applikationen. Debian...
HTH, Johannes
Re: Oracle-Support fürPHP 4.x (auf SuSE)
am 11.05.2006 02:41:52 von volker
Johannes Vogel wrote:
> Volker Boehm wrote:
>> Ich soll auf einer Kundenmaschine (SuSE 9.irgendwas Enterprise), auf der
>> suse-mäßig ein Apache mit PHP installiert ist, dafür sorgen, daß das PHP
>> auf eine Oracle Datenbank zugreifen kann.
>> Vor Jahren (war wohl letztes Jahrtausend) habe ich sowas schon mal
>> gemacht (nach Kochrezept) und erinnere mich mit Grausen daran.
>> Nun lese ich im Web die unterschiedlichsten Aussagen:
> [..]
>> - Wenn ich das PHP neu compiliere, wo finde ich dann eine Anleitung mit
>> welchen Switchen das ursprüngliche PHP compiliert war, damit ich dann
>> noch den '--with-oci8' hinzufügen kann. Sonst habe ich hinterher ein
>> PHP, das wunderschön auf Oracle zugreifen kann, aber ansonsten doof
>> wie Brot ist, weil ich tausend andere Sachen vergessen habe, die man
>> üblicherweise braucht. Einen Linux-Kernel kompiliere ich ja auch nur
>> mit der Modifikation einer getesteten Konfiguration und nicht
>> from-scratch.
>
> ./configure --help
Das hatte ich befürchtet :-)
Da erhalte ich ca. 350 Optionen, von denen ich nicht weiß, ob ich sie
brauche oder nicht. Natürlich möchte ich Support für alle gängigen
Datenbanken, die mir in den nächsten Jahren noch begegnen könnten; aber was
brauch' ich noch?
Ich installiere mir also ein PHP-Skript mit 'phpinfo()' auf einem Rechner
meiner Wahl, der ein vorinstalliertes PHP hat, rufe das Skript auf und
schreibe alle ca. 40 '--with-irgendwas' als Switches zu meinem ./configure
ab?
Das mit dem '--with-oci8-instant-client[=DIR]' ist ja schon eine
Offenbarung. So brauche ich dem Rechner nur mit knapp 70 MB statt der
üblichen knapp 300 MB für Oracle vollzumüllen. Und außerdem nicht noch 1000
schwachsinnige Fragen bei der Installation zu beantworten.
Brauche ich dann eigentlich noch eine tnsnames.ora? Ich bevorzuge sowieso
bei den Connect-Strings die Variante, wo Servername/IP, Port und
Datenbankname angegeben werden. Einen Sinn macht eine tnsnames.ora dann
doch sowieso nur in Nicht-TCP/IP-Netzen (und: Wo müßte die in der
Instant-Client-Variante hin)?
>> - Der Kunde hat von Linux unwesentlich mehr Ahnung als ein Dackel vom
>> Klavierspielen. Deshalb hat er sich das SuSE-Linux von einer Firma,
>> die davon Ahnung haben soll, aufspielen lassen. Wenn ich da jetzt ein
>> selbstkompiliertes PHP draufspiele, bügeln die mir doch beim erstem
>> Aufruf von Yast mit anschließen suseconfig alles wieder über.
>> Solche - und ähnliche - Späße waren der Grund, warum ich für meinen
>> Hausgebrauch vor fünf Jahren von SuSE zu Debian gewechselt bin.
>
> SuSE kenn ich kaum. Genau wegen obiger Aussage kann ich es nicht
> ausstehen.
Da sind wir uns einig. Aber trotzdem muß ich dieses Problem im Auge
behalten. Am besten 'nen cron-Job mit
make install
cp /etc/myhttpd.conf /etc/apache/httpd.conf
alle Viertelstunde auf dem PHP-Generierungs-Verzeichnis starten :-)
>> Ergänzend möchte ich noch bemerken, das ich eigentlich ganz glücklich -
>> und auch vollständig ausgelastet - damit bin, Anwendungen zu
>> programmieren (derzeit in Java, PHP und Perl) und Installation und
>> Konfiguration von Betriebssystemen und Standardtools nur als notwendiges
>> Übel ansehe. Ich bitte daher, meine Unwissenheit und mangelnde
>> Begeisterungsfähigkeit für diese Themen zu entschuldigen. Ich installiere
>> normalerweise, wo immer es geht, fertige Linux-Pakete und greife - außer
>> bei eigenen Programmen - nur zum Compiler, wenn es sich nicht vermeiden
>> läßt. Aber dies ist wohl so ein Fall.
>
> Geht mir nicht gross anders. Irgendwann war's mir aber zu bunt für
> Fremdsysteme zu entwickeln und habe kurzerhand einen eigenen Webserver
> für meine speziellen Applikationen. Debian...
Langsam nimmt die Sache Formen an.
mfg Volker
PS: Kann man eventuell merken, daß ich nicht der glühende Oracle-Fan bin?
Ich bevorzuge normalerweise pflegeleichte Datenbanken wie Postgres oder
MySQL.
--
Volker Böhm Tel.: +49 4141 981152 www.vboehm.de
Voßkuhl 5 Fax: +49 4141 981154
D-21682 Stade mailto:volker@vboehm.de
Re: Oracle-Support für PHP 4.x (auf SuSE)
am 11.05.2006 03:50:16 von Johannes Vogel
Hi Volker
Volker Boehm wrote:
> Johannes Vogel wrote:
>> ./configure --help
> Das hatte ich befürchtet :-)
> Da erhalte ich ca. 350 Optionen, von denen ich nicht weiß, ob ich sie
> brauche oder nicht. Natürlich möchte ich Support für alle gängigen
> Datenbanken, die mir in den nächsten Jahren noch begegnen könnten; aber was
> brauch' ich noch?
Sorry, du wolltest eine Liste - nicht eine Auswahl. Was du genau haben
möchtest, entscheidest alleine du...
> Ich installiere mir also ein PHP-Skript mit 'phpinfo()' auf einem Rechner
> meiner Wahl, der ein vorinstalliertes PHP hat, rufe das Skript auf und
> schreibe alle ca. 40 '--with-irgendwas' als Switches zu meinem ./configure
> ab?
Ja, so mach ich's. Bzw. ich nehm die config.nice von bisherigen
Installationen.. :-)
> Das mit dem '--with-oci8-instant-client[=DIR]' ist ja schon eine
> Offenbarung. So brauche ich dem Rechner nur mit knapp 70 MB statt der
> üblichen knapp 300 MB für Oracle vollzumüllen. Und außerdem nicht noch 1000
> schwachsinnige Fragen bei der Installation zu beantworten.
> Brauche ich dann eigentlich noch eine tnsnames.ora? Ich bevorzuge sowieso
> bei den Connect-Strings die Variante, wo Servername/IP, Port und
> Datenbankname angegeben werden. Einen Sinn macht eine tnsnames.ora dann
> doch sowieso nur in Nicht-TCP/IP-Netzen (und: Wo müßte die in der
> Instant-Client-Variante hin)?
Hier lass ich lieber andere ran. Ich kenn mich mit Oracle (noch nicht
bzw. nicht mehr) wirklich aus... Eine Repetitionsschulung geniesse ich
grad. Ich muss mich mal genau darum kümmern. Bisher war mein Problem,
dass sich Oracle nicht mehr so einfach ohne X-Window installieren lässt.
>> SuSE kenn ich kaum. Genau wegen obiger Aussage kann ich es nicht
>> ausstehen.
> Da sind wir uns einig. Aber trotzdem muß ich dieses Problem im Auge
> behalten. Am besten 'nen cron-Job mit
> make install
> cp /etc/myhttpd.conf /etc/apache/httpd.conf
> alle Viertelstunde auf dem PHP-Generierungs-Verzeichnis starten :-)
U.U. reichen bereits Hard-/Soft-Links...
>> Geht mir nicht gross anders. Irgendwann war's mir aber zu bunt für
>> Fremdsysteme zu entwickeln und habe kurzerhand einen eigenen Webserver
>> für meine speziellen Applikationen. Debian...
> Langsam nimmt die Sache Formen an.
Das wird schon. Viel Geduld und das kommt zu klappen.
> PS: Kann man eventuell merken, daß ich nicht der glühende Oracle-Fan bin?
> Ich bevorzuge normalerweise pflegeleichte Datenbanken wie Postgres oder
> MySQL.
Oracle ist ein Ungetüm und Urgestein. Wenn du aber Oracle begriffen
hast, sind die anderen alle nur ein Klacks!
HTH, Johannes
Re: Oracle-Support für PHP 4.x (auf SuSE)
am 11.05.2006 10:01:56 von Hartmut Holzgraefe
Volker Boehm wrote:
> Ich soll auf einer Kundenmaschine (SuSE 9.irgendwas Enterprise), auf de=
r
> suse-mäßig ein Apache mit PHP installiert ist, dafür sorgen, daß=
das PHP
> auf eine Oracle Datenbank zugreifen kann.=20
[...]
> Nun lese ich im Web die unterschiedlichsten Aussagen:=20
>=20
> - Man muß PHP neucompilieren
>=20
> - Man muß den Apachen _und_ PHP neu compilieren
>=20
> - Man muß nur einem Hilfstool (da kam was von PECL vor) das Oracle
> vorwerfen und (Abrakadabra und dreimal gen Mekka gewandt) hat man
> ein .so-File, daß man ins PHP einbinden kann.
>=20
> Und was ist nun richtig?
Wie üblich: es kommt darauf an ...
Apache musst Du nur neu kompilieren wenn PHP dort statisch und nicht
als Modul eingebunden ist, das macht heutzutage aber eigentlich niemand
mehr von daher wird das wohl nicht nötig sein.
(Ausnahme: dein Apache stürzt ab, dann siehe den PThread Hinweis auf
http://php.net/oci8)
PHP musst Du neu kompilieren wenn Du die Oracle-Funktionalität fest
einbinden willst.
Du kannst aber PHP Extensions auch als shared library kompilieren
(.so bzw. DLL) und dynamisch laden indem Du diese in der php.ini
Konfiguration mit
extension=3Dextension_name.so
angiebst.
Wenn Du die nötigen Oracle-Clientbibliotheken bereits installiert
hast (siehe auch dazu http://php.net/oci8) dann sollte es reichen
pecl install oci8
auszuführen (evtl. as root) und die php.ini anzupassen:
extension=3Doci8.so
Wenn du
--=20
Hartmut Holzgraefe, Senior Support Engineer .
MySQL AB, www.mysql.com
http://www.mysql.com/support/
Re: Oracle-Support für PHP 4.x (auf SuSE)
am 11.05.2006 10:40:31 von Joerg Behrens
Hartmut Holzgraefe schrieb:
[..]
> pecl install oci8
Achtung, aus welchen Gruenden auch immer bringt PHP immer noch ext/oci8
mit. Da Tony fleissig Bugs fixed, sich aber am Realease Datum und der
Versionsnummer nichts aendert in PECL, vermute ich das die ext/oci8 viel
aktueller ist. Ein Blick in das CVS sollte klarheit schaffen.
Genau anders herum verhaelt es sich mit ext/pdf. Die gibt es auch in
PECL. Aber die Geschichte erzaehlen wir ein anderes mal :)
Der pecl installer macht ja auch nicht viel mehr als ein phpize
aufzurufen. Das bekommt man auch noch selber hin.
Gruss
Joerg
--
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
Re: Oracle-Support fürPHP 4.x (auf SuSE)
am 12.05.2006 19:05:40 von Thomas Hochstein
Volker Boehm schrieb:
> - Wenn ich das PHP neu compiliere, wo finde ich dann eine Anleitung mit
> welchen Switchen das ursprüngliche PHP compiliert war, damit ich dann
> noch den '--with-oci8' hinzufügen kann.
phpinfo();
Wenn das überraschend wenige sind, dürfte der Löwenanteil der
Extensions nicht eincompiliert, sondern als Modul eingebunden sein.
> Ich hoffe, ihr könnt mich auf den rechten Weg geleiten.
Ich würde zunächst schauen, ob Suse nicht ein passendes Paket
anbietet, das man als RPM oder direkt mit yast2 auf das System werfen
kann.
Danach würde ich schauen, ob man das Oracle-Gedöns wirklich
einkompilieren muß oder nicht vielleicht einfach als Modul einbinden
kann.
-thh
Re: Oracle-Support fürPHP 4.x (auf SuSE)
am 12.05.2006 22:57:37 von volker
Hartmut Holzgraefe wrote:
> Volker Boehm wrote:
>> Ich soll auf einer Kundenmaschine (SuSE 9.irgendwas Enterprise), auf der
>> suse-mäßig ein Apache mit PHP installiert ist, dafür sorgen, daß das PHP
>> auf eine Oracle Datenbank zugreifen kann.
> [...]
>> Nun lese ich im Web die unterschiedlichsten Aussagen:
>>
>> - Man muß PHP neucompilieren
>>
>> - Man muß den Apachen _und_ PHP neu compilieren
>>
>> - Man muß nur einem Hilfstool (da kam was von PECL vor) das Oracle
>> vorwerfen und (Abrakadabra und dreimal gen Mekka gewandt) hat man
>> ein .so-File, daß man ins PHP einbinden kann.
>>
>> Und was ist nun richtig?
>
> Wie üblich: es kommt darauf an ...
>
> Apache musst Du nur neu kompilieren wenn PHP dort statisch und nicht
> als Modul eingebunden ist, das macht heutzutage aber eigentlich niemand
> mehr von daher wird das wohl nicht nötig sein.
> (Ausnahme: dein Apache stürzt ab, dann siehe den PThread Hinweis auf
> http://php.net/oci8)
>
> PHP musst Du neu kompilieren wenn Du die Oracle-Funktionalität fest
> einbinden willst.
>
> Du kannst aber PHP Extensions auch als shared library kompilieren
> (.so bzw. DLL) und dynamisch laden indem Du diese in der php.ini
> Konfiguration mit
>
> extension=extension_name.so
>
> angiebst.
>
> Wenn Du die nötigen Oracle-Clientbibliotheken bereits installiert
> hast (siehe auch dazu http://php.net/oci8) dann sollte es reichen
>
> pecl install oci8
>
> auszuführen (evtl. as root) und die php.ini anzupassen:
>
> extension=oci8.so
Hallo allerseits,
zuerst möchte ich allen für die tatkräftige Hilfe und die guten Tipps danken
und gleichzeitig vermelden:
Es läuft!
Ich habe mir eine Lösung mit der von Hartmut angerissenen
PECL-Shared-Library-Variante entwickelt, die ich jetzt schon auf vier
Maschinen (2 Debian, 2 SuSE) eingesetzt habe und für die ich jetzt keine
zehn Minuten mehr brauche.
Das Ganze ist unter
http://www.vboehm.de/wiki/index.php?title=PhpOracle
nachzulesen.
Kurz, knapp, präzise, keine Eingriffe in die Installation - da kann auch ein
SuSEConfig nicht viel kaputtmachen -; so hab' ich mir das vorgestellt.
Oracle kann auch Spaß machen :-)
mfg Volker
PS: Wer Änderungen/Ergänzungen hat: Bitte per Mail an mich, da mein Wiki
vorsichtshalber nicht für jeden änderbar ist.