• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

php neu kompilieren... wie?!

6aholic

Newbie
hi!


ich habe eine linux suse 9.0 rechner zuhause um ein bisschen zu basteln.
nun will ich die gd einbinden. unter windoofs kein thema:
simikolon raus und es geht.
aber unter linux gehts nicht, ich denke hierzu muss ich php neu kompilieren.
ich hab leider keine ahnung- wie?

so far.
6aholic.
 

nbkr

Guru
Vielleicht hilfts:

Für PHP5:
http://texte.benjaminfleckenstein.de/wissen/php5cgi/

Für PHP4:
http://texte.benjaminfleckenstein.de/wissen/phpcgi/
 
OP
6

6aholic

Newbie
danke :)

ich werd mal guggn...
nur die sache ist die:
gd2 und freetype sind laut phpinfo() bereits installiert gewesen, da ich diese auch schon nutze...
nur komisch ist, dass
a) kein .gif support geht [evtl hatte ich den auch schonmal deaktiviert - weiß aber nicht mehr wo?!]
und
b) geht zb imagerotrate() nicht...


dies find ich doch ziemlich merkwürdig...
weiterhin hatte ich schon gesucht, allerdings keine aktuelle 2.0.33er rpm gefunden...

phpinfo() sagt:
gd
GD Support enabled
GD Version 2.0 or higher
FreeType Support enabled
FreeType Linkage with freetype
JPG Support enabled
PNG Support enabled
WBMP Support enabled


.gif support gab es damals nicht, weil nach meinen informationen da eas mit patentrechten noch nicht klar war.
gd 2.0.33 laut boutell kann dies aber. [wie gesagt, keine rpm gefunden.]
siehe http://www.boutell.com/gd/

komisch ist wie gesagt immernoch, dass imagerotrate nicht geht, obwohl in der dokumentation lediglich steht "Anmerkung: Diese Funktion steht nur zur Verfügung, wenn PHP mit der GD Bibliothek übersetzt wurde, die mit PHP zusammen erhältlich ist.".
wie wir sehen, ist gd 2 installiert, vielleicht aber noch nicht mit php "übersetzt" worden?!

ich danke nochmal recht herzlich für die hilfen
 

nbkr

Guru
6aholic schrieb:
danke :)
b) geht zb imagerotrate() nicht...

Der Tippfehler ist wahrscheinlich nur hier, aber zur Sicherheit. die Funktion heißt imagerotate nicht imagerotrate


phpinfo() sagt:
gd
GD Support enabled
GD Version 2.0 or higher
FreeType Support enabled
FreeType Linkage with freetype
JPG Support enabled
PNG Support enabled
WBMP Support enabled

Kein Gif Support drin. Scheint vielleicht eine alte GD gewesen zu sein mit der PHP übersetzt worden ist.


komisch ist wie gesagt immernoch, dass imagerotrate nicht geht, obwohl in der dokumentation lediglich steht "Anmerkung: Diese Funktion steht nur zur Verfügung, wenn PHP mit der GD Bibliothek übersetzt wurde, die mit PHP zusammen erhältlich ist.".
wie wir sehen, ist gd 2 installiert, vielleicht aber noch nicht mit php "übersetzt" worden?!

Vermute ich auch, aber wie gesagt nur eine Vermutung. Lösen lässt sich das mit neukompilieren. Wenn dann die neueste GD auf dem System installiert ist, sollte PHP auch wieder GIF können.
 
OP
6

6aholic

Newbie
danke!!! ((:)

dann hätte ich "nur" noch 2 fragen:
wie kann ich gd neu installieren, so wie du sagst...
und dann anschließend das php neu kompilieren.
[ohne dass die alten einstellungen verloren gehen...]

so far.
6aholic.
 

panamajo

Guru
nbkr schrieb:
komisch ist wie gesagt immernoch, dass imagerotrate nicht geht, obwohl in der dokumentation lediglich steht "Anmerkung: Diese Funktion steht nur zur Verfügung, wenn PHP mit der GD Bibliothek übersetzt wurde, die mit PHP zusammen erhältlich ist.".
wie wir sehen, ist gd 2 installiert, vielleicht aber noch nicht mit php "übersetzt" worden?!
Seit PHP4.3.0 kommt PHP zusammen mit GDlib, und diese ist beim compilieren einer evtl. schon installierten vorzuziehen.
Kann aber gut sein daß deine PHP Version älter ist (SuSE 9.0). In diesem Fall muß gegen die installierte GDlib gelinkt werden, und diese wird keinen GIF Support haben (das Unisys Patent lief erst letztes Jahr ab), entsprechend wird (wie dokumentiert) die Funktion imagerotate() nicht zur Verfügung stehen.
 

panamajo

Guru
6aholic schrieb:
und dann anschließend das php neu kompilieren.
[ohne dass die alten einstellungen verloren gehen...]
phpinfo() zeigt dir ganz oben die Optionen für configure an, diese übernehmen dann ändern sich die PHP Einstellungen nicht.
 
OP
6

6aholic

Newbie
sorry, aber wie genau sieht der befehl aus?

so, bloß die neue gd?!
'./configure' '--enable-calendar' '--enable-versioning' '--enable-sockets' '--enable-ftp' '--enable-wddx' '--enable-gd-native-ttf' '--enable-xslt' '--enable-track-vars' '--with-apxs=/usr/local/apache/current/bin/apxs' '--with-pgsql=/usr/local/pgsql/current/' '--with-zlib-dir=/usr/lib/' '--with-config-file-path=/etc' '--with-gd=/usr/local/src/lamps/gd-2.0.22' '--with-jpeg-dir=/usr/lib' '--with-tiff-dir=/usr/lib' '--with-png-dir=/usr/lib' '--with-freetype-dir=/usr/local/src/freetype-2.1.5' '--with-ttf=/usr/lib' '--with-xpm-dir=/usr/lib' '--with-xslt-sablot' '--with-expat-dir=/usr/local' '--with-dom=/usr/local' '--with-xmlrpc' '--with-iconv-dir=/usr/local'


und genau das muss ich in die bash haemmern?

so far.
6aholic.
 

panamajo

Guru
6aholic schrieb:
so, bloß die neue gd?!
'./configure' '--enable-calendar' '--enable-versioning' '--enable-sockets' '--enable-ftp' '--enable-wddx' '--enable-gd-native-ttf' '--enable-xslt' '--enable-track-vars' '--with-apxs=/usr/local/apache/current/bin/apxs' '--with-pgsql=/usr/local/pgsql/current/' '--with-zlib-dir=/usr/lib/' '--with-config-file-path=/etc' '--with-gd=/usr/local/src/lamps/gd-2.0.22' '--with-jpeg-dir=/usr/lib' '--with-tiff-dir=/usr/lib' '--with-png-dir=/usr/lib' '--with-freetype-dir=/usr/local/src/freetype-2.1.5' '--with-ttf=/usr/lib' '--with-xpm-dir=/usr/lib' '--with-xslt-sablot' '--with-expat-dir=/usr/local' '--with-dom=/usr/local' '--with-xmlrpc' '--with-iconv-dir=/usr/local'
Also die vielen "/usr/local" lassen mich darauf schließen das das nicht die Ausgabe der PHP Version von SuSE9.0 ist. IMHO ist es nicht wirklich nötig z.B. freetype2 aus den Sourcen zu compilieren, aber wenn du Spaß daran hast... :mrgreen:
Die Option --with-gd=/usr/local/src/lamps/gd-2.0.22 ist falsch, denn du willst ja die funktion imagerotate() verwenden, also mußt du die Sourcen von PHP4.3.* verwenden und dort einfach --with-gd als option angeben.
6aholic schrieb:
und genau das muss ich in die bash haemmern?
Im Prinzip ja, bei der hohen Zahl der Optionen würde ich das Ganze eher in ein Shell-Script pasten...
 
OP
6

6aholic

Newbie
erstamal vielen lieben dank!


huch!
habe ich 9.0 geschrieben?!
9.0 hab ich zum testen zu hause, aber das system worum es sich dreht ist das 8.1,...
ich bin nich so der linux und auch nicht der shell scripter - held...

insofern frag ich vorsichtshalber mal nach:
sieht das ganze so aus?



Code:
#! /bin/sh
./configure --enable-calendar --enable-versioning --enable-sockets --enable-ftp --enable-wddx --enable-gd-native-ttf --enable-xslt --enable-track-vars --with-apxs=/usr/local/apache/current/bin/apxs --with-pgsql=/usr/local/pgsql/current/ --with-zlib-dir=/usr/lib/ --with-config-file-path=/etc --with-gd=/usr/local/src/lamps/gd-2.0.22 --with-jpeg-dir=/usr/lib --with-tiff-dir=/usr/lib --with-png-dir=/usr/lib --with-freetype-dir=/usr/local/src/freetype-2.1.5 --with-ttf=/usr/lib --with-xpm-dir=/usr/lib --with-xslt-sablot --with-expat-dir=/usr/local --with-dom=/usr/local --with-xmlrpc --with-iconv-dir=/usr/local

echo "fertig!?"

und was diese vielen optionen da wollen, auch keine ahnung,...
das freetype brauchte ich irgendwofür - bin mir da selbst nich mehr so sicher. :lol:

so far.
6aholic.
 
OP
6

6aholic

Newbie
danke!
ich habe auf der php-faq seite was gutes gefunden:
Apache Compile Kit. [http://www.loonix.de/html/downloads/detail.php?app_id=5&kat=3]

allerdings wird das dort nur mit php 4.0.1 angeboten.
da ich weitere komplikationen aus dem weg gehen wollte, wollte ich eben die version 4.3.4 lassen.

also versuche ich den weg zu gehen: es zu verstehen und selbst zu kompilieren.
ich habe also geguggt was du meinst und bin auf folgende fragen gestoßen:
wieso ist das übersetzen von freetype2 nicht nötig?
wenn ich also nach einer option [--with-gd] kein =/irgendeinpfad/ angebe wird der source der zu kompilierenden version genommen, richtig?

wie genau finde ich nun raus, wo/ was die aktuellen versionen sind?
wieso sind die pfade falsch?

lg und nochmals danke.
so far.
6aholic.
 
OP
6

6aholic

Newbie
noch 2 fragen, die sich mir stellten:

in welchen verzeichniss muss ich mich befinden?
welche php version aus welchen verzeichniss wird also zum kompilieren genutzt, so dass die php.ini und andere einstellungen nicht überschrieben werden?
in welches verzeichniss installiert der dann das?


so far.
6aholic.
 

panamajo

Guru
6aholic schrieb:
in welchen verzeichniss muss ich mich befinden?
Im Verzeichnis der PHP Sourcen. Üblicherweise /usr/local/src/php-$VERSIONSNUMMER
6aholic schrieb:
welche php version aus welchen verzeichniss wird also zum kompilieren genutzt, so dass die php.ini und andere einstellungen nicht überschrieben werden?
Immer die Sourcen aus dem aktuellen Verzeichnis.
Die verwendete php.ini kann ebenfalls angegeben werden, laß dir mal die möglichen Optionen mit
./configure --help
ausgeben.
6aholic schrieb:
in welches verzeichniss installiert der dann das?
In die Verzeichnisse, die du ./configure mitgibst. Wichtig ist --prefix=, evtl. auch andere Angaben.
 
OP
6

6aholic

Newbie
ich danke dir!
du bist echt eine große hilfe!

es wäre nett, wenn wir uns mal im icq treffen könnten.

so far.
6aholic.
 

spoensche

Moderator
Teammitglied
Als erstes solltest du nach devel rpms für die module (z.B. zlib-devel usw.) auf www.rpmseek.com suchen und bei dir installieren (oder selober compilieren).

Anschließend wechselst du per kommandozeile in das verzeichnis, in das du php entpackt hast.

Code:
linux~ /home/user/php/>./configure --prefix=/usr/local/php --with-aspx=/usr/local/apache2/bin/aspx --with-mysql=/usr/path/to/mysql-config --with-mysqli=/usr/path/to/mysql-config

für weitere configure optionen führe ./configure --help aus.
 
Oben