kompilieren
Andreas Korthaus
- php
Hallo!
Ich glaube jetzt ist der Zeitpunkt gekommen wo ich nicht mehr mit meinen schönen automatischen Installations-Routinen auskomme. Ich habe das Problem das mein PHP(4.2.2, original von der RedHat Linux 8.0 CD) leider keine Grafiken ausgeben kann. So wie ich das sehe müßte ich es neu kompilieren, dun wenn ich schonmal dabei bin kann ich ja auch direkt 4.3 nehmen.
Vorab, ein paar Fragen:
habe ich das richtig verstanden das bei PHP 4.3 die gdlib fest mit integriert ist, ich diese also nicht extra runterladen und bei ./configure angeben muß?
Wenn ich PHP als Apache-Modul installieren will, muß ich den Apachen _nicht_ neu kompilieren, sofern ich PHP nicht statisch in den httpd einkompilieren will, oder?
kann hier jemand einschätzen wie groß der Performance-Vorteil bei einem statisch einkompilierten PHP-Apachemodul ist?
Kann ich nach make install den Source-tree löschen? Wenn nicht, wohin kopiere ich das ganze dann am besten? Heißt das das alle Module, pear, sofern sie nicht als shared bei ./configure angegeben wurden, das die alle mit im Apache-Modul in der einen Datei enthalten sind?
Als erstes habe ich mir die Seiten im Manual dazu durchgelesen, und dann nochmal die Datei INSTALL.
Ich habe nur Apache 2 installiert.
Ich habe Apache angehalten, das alte PHP-Apachemodul umbenannt(sicher ist sicher habe ich mir gedacht)
Also Archov runtergeldane, entpackt(in mein home-Verzeichnis), und dann einfach mal probiert, wie in der Anleitung angegeben, mit
./configure --with-mysql --with-apxs2
Wie man sich gut vorstellen kann ist das ganze natürlich ordentlich in die Hose gegangen. Conigure hat alles mögliche gemacht, aber am Ende stand da, das s nicht funktioniert habe, und das vermutlich apxs2 nicht gefunden werden konnte. Also habe ich auf dem ganzen Rechner nach apxs bzw. apxs2 gesucht(locate), aber nicht gefunden. Wie soll ich das sonst installieren? with-apache ist nur der 1.x Version vorbehalten, wenn ich das richtig verstanden habe. Außerdem finde ich kein Verzeichnis wo der gesamte Apache drinliegt, das iost alles quer über das Filesystem vertreilt.
Ich dachte dadurch das ich vorher das Modul ja umbenannt hatte, könnt eich das eben wieder rückgängig mchen und mithilfe von phpinfo() sehen wie das vorher gemacht wurde - aber leider stürzt der Apche jetzt ab wenn ich ein PHP-Script aufrufe:
error.log:
[Tue Jan 14 20:54:52 2003] [crit] (17)Die Datei existiert bereits: unable to create scoreboard (name-based shared memory failure)
Nunja, jetzt stehe ich da und nichts geht mehr. Und jetzt? Wo bekomme ich das benötigte apxs her? Muß ich den Apachen auch selbst neu installieren?
Und wo soll ich sowas speichern? Das PHP - Archiv, oder das Apache Archiv, wohin entpacken?
Ich hoffe Ihr könnt mir weiterhelfen :-(
Viele Grüße
Andreas
Hallo Andreas
Nicht zu allen Punkten was :-(
Ich glaube jetzt ist der Zeitpunkt gekommen wo ich nicht mehr mit meinen schönen automatischen Installations-Routinen auskomme. Ich habe das Problem das mein PHP(4.2.2, original von der RedHat Linux 8.0 CD) leider keine Grafiken ausgeben kann. So wie ich das sehe müßte ich es neu kompilieren, dun wenn ich schonmal dabei bin kann ich ja auch direkt 4.3 nehmen.
Wieso das? Ich hab's zwar noch nicht ausprobiert, aber bei meiner 7.3er-Box ging das wunderbar. Ich probiere nachher gleich mal die Skripte auf meiner 8.0 :-)
... nächstes kann ich wenig dazu sagen, weil ich es mir nicht durchgelesen hab' ...
<selbstanklage>
rtfm
</selbstanklage>
Hab' etwas zuviel gekürzt :-(
apxs wird von Paket httpd-devel zur Verfügung gestellt,
http://www.europe.redhat.com/documentation/rhl8.0/rhl-rg-de-8.0/s1-apache-addmods.php3
Weiter im Text
Unter RedHat ist es problemlos möglich zum Standardapache einen weiteren z.B. aus Originalquellen zu kompilieren und zu installieren. Du kannst halt nicht den Standardstartmechanismus verwenden. D.h., wenn Dein neuer apache im init-Mechanismus gestartet werden soll, mußt Du die init-Skripte entsprechend ändern.
Das war übrigens genau der Grund, warum ich irgendwann einmal von der SuSE zu RedHat gewechselt bin ;-) Ich war zu dumm, um sowas unter der SuSE hinzukriegen oder -biegen :-(
Gruss,
Vinzenz
Hallo!
Wieso das? Ich hab's zwar noch nicht ausprobiert, aber bei meiner 7.3er-Box ging das wunderbar. Ich probiere nachher gleich mal die Skripte auf meiner 8.0 :-)
Hm. Ich habe es probiert und es ging nicht. Lioegt glaueb ich daran das ich jpeg... nicht installiert habe.
Aber ich _will_ es ja jetzt auch mal richtig machen ;-)
apxs wird von Paket httpd-devel zur Verfügung gestellt,
http://www.europe.redhat.com/documentation/rhl8.0/rhl-rg-de-8.0/s1-apache-addmods.php3
Sehr schön, das hat dann geklappt. Configure hat funktioniert, make auch, aber dann das:
[root@localhost php-4.3.0]# make install
Installing PHP CLI binary: /usr/local/bin/
Installing PHP SAPI module
/usr/lib/httpd/build/instdso.sh SH_LIBTOOL='/usr/lib/httpd/build/libtool' libphp4.la /usr/lib/httpd/modules
sh: line 1: /usr/lib/httpd/build/instdso.sh: Datei oder Verzeichnis nicht gefunden
apxs:Error: Command failed with rc=8323072
.
make: *** [install-sapi] Fehler 1
Die Datei ist nicht da, und auch mit locate nicht zu finden(wobei locate evtl nicht ganz aktuell ist da ich das RPM installiert habe). In dem Verzeichnis fehlt die Datei aber auf alle Fälle.
Das war übrigens genau der Grund, warum ich irgendwann einmal von der SuSE zu RedHat gewechselt bin ;-) Ich war zu dumm, um sowas unter der SuSE hinzukriegen oder -biegen :-(
Ich hatte auch kurz Suse, aber das ist bei mir trotz Tagelanger Versuche nie richtig gelaufen, RH einmal installiert udn es läfut beser als alles andere was ich je hatte - bis auf diese Kleinigkeiten, die aber eher auf meien Unkenntnis zurückzuführen sind ;-)
Jedenfalls danke ich Dir sehr!
Grüße
Andreas
Hallo Andreas,
Wieso das? Ich hab's zwar noch nicht ausprobiert, aber bei meiner 7.3er-Box ging das wunderbar. Ich probiere nachher gleich mal die Skripte auf meiner 8.0 :-)
Hm. Ich habe es probiert und es ging nicht. Lioegt glaueb ich daran das ich jpeg... nicht installiert habe.
Also mein altes Skript (ist übrigens ein Kniffel-Clone mit MySQL-basiertem Highscore) funktioniert auch unter RH 8.0, was entscheidender ist, ist die Ausgabe von phpinfo()
Gibt bei mir im Abschnitt gd
GD Support enabled
GD Version 1.6.2 or higher
FreeType Support enabled
FreeType Linkage with freetype
JPG Support enabled
PNG Support enabled
WBMP Support enabled
aus, kein Wunder, dass ich Grafiken, wenn auch keine GIFs, erzeugen kann. An die GIF-Diskussion hier im Forum erinnerst Du Dich bestimmt noch.
Aber ich _will_ es ja jetzt auch mal richtig machen ;-)
Du hast mich auf den Geschmack gebracht. Wenn ich morgen (bzw. heute im Laufe des Tages) dazu komme, will ich auch mal apache mit php-Unterstützung aus den Sourcen (s?) kompilieren und installieren, anschliessend die PHP-Unterstützung dazu, dann gibt es auch PHP 4.3.0.
Mal schauen, ob ich auf ähnliche Probleme stosse wie Du?
Vielleicht bist Du ja dann schon ein paar Schritte weiter und kannst mir helfen.
Gruss,
Vinzenz
Hallo!
Gibt bei mir im Abschnitt gd
GD Support enabled
GD Version 1.6.2 or higher
FreeType Support enabled
FreeType Linkage with freetype
JPG Support enabled
PNG Support enabled
WBMP Support enabledaus, kein Wunder, dass ich Grafiken, wenn auch keine GIFs, erzeugen kann. An die GIF-Diskussion hier im Forum erinnerst Du Dich bestimmt noch.
Du wirst lachen, selbiges hatte ich auch da stehen. (PHP 4.2.2)
Was hast Du denn oben in den configure-Anweisungen stehen, bzgl. jpeg?
ich habe ein wirklich einfach es Script verwendet, welches so bei meinem Provider problemlos läuft.
Aber eine gute Nachricht, nachdem ich den Rechner neu gestartet hatte, hat wenigstens das alte PHP wieder funktioniert. Verstehe zwar nicht warum ein Neustart des Apachen nicht ausreicht, aber sowas hatte ich schonmal.
Aber ich _will_ es ja jetzt auch mal richtig machen ;-)
Du hast mich auf den Geschmack gebracht. Wenn ich morgen (bzw. heute im Laufe des Tages) dazu komme, will ich auch mal apache mit php-Unterstützung aus den Sourcen (s?) kompilieren und installieren, anschliessend die PHP-Unterstützung dazu, dann gibt es auch PHP 4.3.0.
Mal schauen, ob ich auf ähnliche Probleme stosse wie Du?
Vielleicht bist Du ja dann schon ein paar Schritte weiter und kannst mir helfen.
ich tue mein bestes. Habe auch schon die RH Mailing-Liste bemüht, vielleicht ergibt sich ja von da aus was.
Grüße
Andreas
Hi!
Mal schauen, ob ich auf ähnliche Probleme stosse wie Du?
Vielleicht bist Du ja dann schon ein paar Schritte weiter und kannst mir helfen.
ich tue mein bestes. Habe auch schon die RH Mailing-Liste bemüht, vielleicht ergibt sich ja von da aus was.
Man glaubt es kaum aber ich habe es tatsächlich geschafft. Ich habe dei Fehlermeldung öfter Gefunden, alle mit RH8, Apache2 u. PHP, aber nirgebds eien Lösung, da habe ich mir den aktuellen Source runtergezogen(Version 2.0.43 anstatt 2.0.40), die Datei darin gefunden, in den entsprechenden Ordner gepackt und es lief ohne Probleme. Natürlrlcih läuft gdlib jetzt nicht, muß also neu kompilieren. Reicht es eigentlich diese cache-Datei zu löschen, oder muß ich nochwas machen?
Naja, probieren geht über studieren...
Grüße
Andreas
Hallo!
Man glaubt es kaum aber ich habe es tatsächlich geschafft.
zu früh gefreut, das war nur mit wenigen Configure-Einstellungen. Jetzt habe ich ein problem mit der libjpeg. Ich habe dem manual entsprechend den source der lib runtergeladen, dann habe ich das archiv entpackt, und dann habe ich das ganze mit
./configure
make
make install
installiert(was im nachhinein glaube ich ziemlich unnötig war, aber es waren eh nur ein paar Dateien die jetzt unter /usr/local/bin liegen.)
Jedenfalls habe ich diesen Pfad dann dem php ./configure angegeben, also sowas wie
--with-jpeg-dir=/usr/local/bin
Aber das hat genau hier einen Fehler beim konfigurieren hervorgherufen, und zwar sei die Datei libjpeg.(so|a) nicht gefunden worden. Die wurde auch nicht in den besagten Pfad installiert. Aber die lag im source-tree, also habe ich sie auch dahin kopiert, aber half auch nichts - selbe Fehlermeldung.
--with-jpeg-dir= welchen Pfad soll ich hier angeben? Und wo muß die Datei dann hin? Kann es was damit zu tun haben das ich am Anfang viele allgemeine Pfadangaben von der RedHat-Konfiguration übernommen habe? Aber wenn ich einen / an den Anfang setze ist es doch immer und alleine der absolute Pfad, und wenn ich genau in dem Pfad eien Datei mit genau dem Namen liegen habe - warum in aller Welt findet ./configure die dann nicht?
Ach ja, RedHat selbst hat
--with-jpeg-dir=/usr verwendet, aber in /usr ist keine einzige Datei. Kein Wunder das das nicht lief, oder kann es sein das /usr irgendein Unterverzeichnis eines der vorher definierten Basispfade darstellt?
Viele Grüße
Andreas
Hallo Vinzenz!
Ja, ich nochmal ;-)
Wenn Du das näcshte mal an RH8 sitzt kannst Du mir einen Gefallen tun? Kannst Du mal in phpinfo() nachgucken wie Dein --with-jpeg-dir Pfad aussieht? Und ob Du in dem Pfad die Datei libjpeg.so oder libjpeg.a hast? Oder ob die sonstwo in Deinem Filesystem rumschwirrt?
Kannst Du mir sagen wie man unter Linux am besten nach Dateinamen sucht? Ich verwende immer "locate name.xy", nur werde ich das Gefühl nicht los das locate mir manchmal Dateien unterschlägt! Aber auch "find / name.xy" bringt dann kein Egebnis.
Viele Grüße
Andreas
Hallo Andreas,
Wenn Du das näcshte mal an RH8 sitzt kannst Du mir einen Gefallen tun? Kannst Du mal in phpinfo() nachgucken wie Dein --with-jpeg-dir Pfad aussieht? Und ob Du in dem Pfad die Datei libjpeg.so oder libjpeg.a hast? Oder ob die sonstwo in Deinem Filesystem rumschwirrt?
Ich sitz' noch nicht dran, hab' gerade die Installation laufen. Zum Kompilieren von apache und php komme ich sicher erst morgen
Kannst Du mir sagen wie man unter Linux am besten nach Dateinamen sucht? Ich verwende immer "locate name.xy", nur werde ich das Gefühl nicht los das locate mir manchmal Dateien unterschlägt! Aber auch "find / name.xy" bringt dann kein Egebnis.
Neben den von Dir verwendeten Kommandos verwende ich noch
whereis
Allerdings starte ich bei find die Suche meistens nicht in /
insbesondere, wenn ich eine CD gemountet habe, auf der die zu findende Datei ganz sicher nicht ist ;-)
Bei RedHat-eigenen Dateien suche ich manchmal einfach auch in der RedHat-Doku :-)
Gruss,
Vinzenz
Hallo Andreas,
Spät, aber hoffentlich nicht zu spät :-)
Wenn Du das näcshte mal an RH8 sitzt kannst Du mir einen Gefallen tun? Kannst Du mal in phpinfo() nachgucken wie Dein --with-jpeg-dir Pfad aussieht? Und ob Du in dem Pfad die Datei libjpeg.so oder libjpeg.a hast? Oder ob die sonstwo in Deinem Filesystem rumschwirrt?
Bin wieder zu Hause, und hab' im Gegensatz zur Firma wieder RH 8.0.
Wie Du im anderen Posting schreibst:
--with-jpeg-dir /usr
Und ja, darunter gibt es die gewünschten Dateien, nur nicht mit dem Namen, den Du wohl gesucht hast. Beide Dateien finden sich, nicht verwunderlich, im Unterverzeichnis
/usr/lib
Genauer
/usr/lib/libjpeg.so.62
/usr/lib/libjpeg.so.62.0.0
Kannst Du mir sagen wie man unter Linux am besten nach Dateinamen sucht? Ich verwende immer "locate name.xy", nur werde ich das Gefühl nicht los das locate mir manchmal Dateien unterschlägt! Aber auch "find / name.xy" bringt dann kein Egebnis.
Gefunden mit
find /usr -name "libjpeg*"
Gruss,
Vinzenz
Hallo!
das wurde für configure verwendet
--with-jpeg-dir /usr
und dort liegen die Dateien:
/usr/lib/libjpeg.so.62
/usr/lib/libjpeg.so.62.0.0
Heißt das configure sucht auch in Unterverzeichnissen nach möglichen Dateien? Bei mir wurde libjpeg.(so|a) nicht gefunden, kann es sein das er auf.62... nicht reagiert? Denn dieselben Dateien hab ich an derselben stelle(nicht weioter verwunderlich bei der gleichen Distri und derselben Version ;-))
Hm. Ich probire es einfach nochmal mit dem originalen Pfad. Wenn ich das Verzeichnis in das ich entpackt habe lösche, dann brauch ich mich doch um nichts mehr kümmen und kann einfach nochmal mit configure, make... starten, oder?
Viele Grüße und Danke das Du nachgeguckt hast!
Andreas
Hallo!
Noch eine Frage - in welches Verzeichnis entpacke ich den Source sinnvollerweise? Mein home-dir?
und noch eine Ergänzung, bevor ich "make install" ausführe erhalte ich als letzte Zeile von "make":
ext/mysql/libmysql/my_tempnam.lo: In function my\_tempnam': /root/php-4.3.0/ext/mysql/libmysql/my\_tempnam.c:103: the use of
tempnam' is dangerous, better use `mkstemp'
[root@localhost php-4.3.0]# make install
und dann halt:
Installing PHP CLI binary: /usr/bin/
Installing PHP SAPI module
/usr/lib/httpd/build/instdso.sh SH_LIBTOOL='/usr/lib/httpd/build/libtool' libphp4.la /usr/lib/httpd/modules
sh: line 1: /usr/lib/httpd/build/instdso.sh: Datei oder Verzeichnis nicht gefunden
apxs:Error: Command failed with rc=8323072
.
make: *** [install-sapi] Fehler 1
Jemand ne Idee wo das Problem liegt? Kann es sein das schon make abgebrochen hat?
Grüße
Andreas