Wie php5.x reconfigure, recompile

Apache, Lighttpd, nginx, Cherokee
eule
Posts: 3
Joined: 2008-04-16 23:52

Wie php5.x reconfigure, recompile

Post by eule » 2008-04-17 00:04

Hallo,
ich entwickel gerade eine SOAP-Applikation und benötige auf dem (Kunden)Server natürlich
die php-soap Erweiterung. (Anm. Server gehört Kunde, mit 1&1/Suse/Yast/Plesk kenne ich mich nicht so aus)

phpinfo sagt kein soap.
Also wollte ich das vorhandene(!) PHP neu kompilieren --enable-soap

So sieht es aus:
System: openSuse 10.2 (2.6.20.21-071108a #1 ), php5.2.5, Plesk8.3
phpinfo(snip):

Code: Select all

Configure Command    '../configure' '--prefix=/usr' '--datadir=/usr/share/php5' '--mandir=/usr/share/man' '--bindir=/usr/bin' '--with-libdir=lib64' '--includedir=/usr/include' '--sysconfdir=/etc/php5/apache2' '--with-config-file-path=/etc/php5/apache2' '--with-config-file-scan-dir=/etc/php5/conf.d' '--with-exec-dir=/usr/lib64/php5/bin' '--enable-libxml' '--enable-filter' '--enable-session' '--with-mm' '--with-pcre-regex=/usr' '--enable-xml' '--enable-simplexml' '--enable-spl' '--disable-debug' '--enable-memory-limit' '--enable-inline-optimization' '--enable-zend-multibyte' '--disable-rpath' '--with-apxs2=/usr/sbin/apxs2' '--disable-all' '--disable-cli'

Configuration File (php.ini) Path    /etc/php5/apache2/php.ini
Scan this dir for additional .ini files    /etc/php5/conf.d
additional .ini files parsed    /etc/php5/conf.d/ctype.ini, /etc/php5/conf.d/curl.ini, /etc/php5/conf.d/dom.ini, /etc/php5/conf.d/ftp.ini, /etc/php5/conf.d/gd.ini, /etc/php5/conf.d/gettext.ini, /etc/php5/conf.d/iconv.ini, /etc/php5/conf.d/imap.ini, /etc/php5/conf.d/ioncube-loader.ini, /etc/php5/conf.d/mbstring.ini, /etc/php5/conf.d/mcrypt.ini, /etc/php5/conf.d/mysql.ini, /etc/php5/conf.d/mysqli.ini, /etc/php5/conf.d/openssl.ini, /etc/php5/conf.d/pdo.ini, /etc/php5/conf.d/pdo_mysql.ini, /etc/php5/conf.d/xsl.ini, /etc/php5/conf.d/zlib.ini

This server is protected with the Suhosin Patch 0.9.6.1
Copyright (c) 2006 Hardened-PHP Project

This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2006 Zend Technologies
    with the ionCube PHP Loader v3.1.28, Copyright (c) 2002-2007, by ionCube Ltd.

Ich dachte mir, es wäre einfach den vorhandenen configure einfach mit --enable-soap neu durchlaufen zu lassen.
Aber wo ist der Source? Mit Yast konnte ich zwar erfolgreich von 5.0 auf 5.2.5 updaten, aber mit Yast kann ich ja das configure nicht ändern.. und es ist definitiv kein install-Source auf den Server.
Verständiss-Frage: Wie/Wo/Warum hat Yast das Update erfolgreich kompiliert?

Nun, dann mach ich das update/recompile von Hand:
# wget php5.2.5
# ./configure [old config] --enable-soap
Confgure meldet:
loading cache ./config.cache
checking for Cygwin environment... no
checking for mingw32 environment... no
checking for egrep... grep -E
checking for a sed that does not truncate output... //bin/sed
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for gcc... no
checking for cc... no
configure: error: no acceptable cc found in $PATH
Hä? Auf er Maschine gibt es kein Compiler? Auch find/whereis liefert keine Ergebniss..

Also mal mit Yast den gcc installieren: -ok
# ./configure [...]
checking for gcc... no
checking for cc... no
configure: error: no acceptable cc found in $PATH

# echo $PATH
//sbin://bin:/sbin:/usr/sbin:/usr/local/sbin:/opt/gnome/sbin:/root/bin:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome/bin:/opt/kde3/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin:/usr/lib64:/usr/lib

Help! Ich versteh es nicht.. bin zu blöd für diese Maschine..
Verständniss-Frage: Komisch, wie hat denn Yast das Update kompiliert?
Darf ich das überhaupt neu komplieren, oder macht Plesk/Yast dann Ärger?
Der Suhosin wird hoffentlich bleiben..?


Und nebenbei noch so ein Verständniss-Problem:
Loadmodule.conf beinhaltet:
LoadModule php5_module /usr/lib64/apache2/mod_php5.so

root:/usr/lib64/apache2 # ll *.so
-rwxr-xr-x 1 root root 242840 Nov 25 2006 mod_perl.so
-rw-r--r-- 1 root root 3173632 Jan 14 17:14 mod_php5.so
-rwxr-xr-x 1 root root 73280 Mar 26 12:51 mod_proxy.so

Verständiss-Frage: Wieso ist das mod_php5.so nicht executable (so wie alle anderen)?
Und wieso überhaupt wurde diese PHP-Version ohne "--with-mysql" configuriert. Ist das nun default?

Bevor ich was kaputt installiere.. werde ich erstmal 1 Tag pausieren.
Vielleicht kann mir jemand aus meinem "Black-out" helfen...

Gruss
die Eule

User avatar
Joe User
Project Manager
Project Manager
Posts: 11599
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Wie php5.x reconfigure, recompile

Post by Joe User » 2008-04-17 10:46

Rekompilieren ist unnötige Zeitverschwendung:

Code: Select all

yast -i php5-soap
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: Wie php5.x reconfigure, recompile

Post by daemotron » 2008-04-17 13:10

Wobei das installierte PHP (5.2.5) sicherlich nicht "original SuSE 10.2" ist - könnte also Schwierigkeiten geben...

eule
Posts: 3
Joined: 2008-04-16 23:52

Re: Wie php5.x reconfigure, recompile

Post by eule » 2008-04-18 04:40

Danke!
Mit "yast -i php5-soap" hat es tatsächlich geklappt.

Bemerkenswert: Anscheinend hat Yast das configure nicht mit --enable-soap neu kompiliert, sondern eine soap.so erstellt und ebenfalls eine
/etc/php5/conf.d/soap.ini
Habe mir auch das yast-logfile angesehen, aber ich denke Joe hat Recht: "Zeitverschwendung"..
(Wenn ich mal viel Zeit habe, werde ich mal versuchen zu verstehen was Suse/Yast da treiben)
Nochmals danke und Gruß
EULE

PS: Es bleibt die (bittere) Erkenntniss, dass es anscheindend nicht einfach ist ein vorhandenes PHP auf diesem System neu zu compilieren. Bis zum nächsten Mal wenn ich ein weiteres configure bzw Modul auf dieser Maschine benötige ;)

suntzu
RSAC
Posts: 698
Joined: 2002-12-20 19:47
Location: Mönchengladbach

Re: Wie php5.x reconfigure, recompile

Post by suntzu » 2008-04-18 09:51

EULE wrote:Danke!
Bemerkenswert: Anscheinend hat Yast das configure nicht mit --enable-soap neu kompiliert, sondern eine soap.so erstellt und ebenfalls eine
/etc/php5/conf.d/soap.ini

Außer vielleicht Gentoo kompiliert keine Distribution Pakete auf den Maschinen der Nutzer. Es sind fertig kompilierte Pakete, die Erweiterungen wie z.B. php-soap werden dann nur noch eingebunden und müssen bei einer Aktualisierung des "Basis"-Pakets (php5) auch alle mit aktualisiert werden.
PS: Es bleibt die (bittere) Erkenntniss, dass es anscheindend nicht einfach ist ein vorhandenes PHP auf diesem System neu zu compilieren. Bis zum nächsten Mal wenn ich ein weiteres configure bzw Modul auf dieser Maschine benötige ;)

Man sollte a) nach Möglichkeit oder b) wenn man genau weiß, was man tut oder c) wenn es gar nicht anders geht (wobei dies dann a) und b) einschließt) nicht das Paketmanagement der Distributionen umgehen. Wenn man selber kompiliert, dann am Besten zum Testen mit einem anderen --prefix, so kann man üben und wenn schon nach /usr/..., dann nur, wenn definitiv alle Pakete der Distribution deinstalliert sind. Aber wie gesagt unter der Prämisse, dass selber kompilieren der letzte "Ausweg" ist.

Gruß,
Dominik

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Wie php5.x reconfigure, recompile

Post by Roger Wilco » 2008-04-18 16:05

EULE wrote:(Wenn ich mal viel Zeit habe, werde ich mal versuchen zu verstehen was Suse/Yast da treiben)

Shared Extensions sagen dir nichts?

EULE wrote:PS: Es bleibt die (bittere) Erkenntniss, dass es anscheindend nicht einfach ist ein vorhandenes PHP auf diesem System neu zu compilieren.

Doch, eigentlich schon, wenn man weiß, was man will und nicht blind irgendwelche Configure-Strings aus der phpinfo()-Ausgabe kopiert...

eule
Posts: 3
Joined: 2008-04-16 23:52

Re: Wie php5.x reconfigure, recompile

Post by eule » 2008-04-18 18:42

Roger Wilco wrote:Shared Extensions sagen dir nichts?

Ich dachte doch...Und Yast hat ja auch die ../extension/soap.so erstellt, kopiert oder was auch immer.

Natürlich denke ich, das es am einfachsten ist anhand des phpinfo()-configure auf die lfd. Installation rückzuschliessen.
Naja, man lernt bei jedem neuen System dazu - denke ich..

Ich habe erstmal das was ich wollte.
Trotzdem bleibe ich ja neugierung und lernbegierig.
Daher schiesse ich auch nochmal nach:
Was müsste ich denn machen, wenn ich über yast wirklich mal die configure ändern will, zb. mit "--enable-irgendwasXY" ?

Und mal wieder eine Verständnissfrage zu diesem Paketmanager:
Unter einem *nix möchte ich natürlich wissen was da wo, wie, warum "installiert" wird.
Ändern möchte ich meine Installation auch ganz individuell .... sonst muss ich mich ja genauso einlassen wie bei einem Windows-Betriebssystem(!sic)..
(ich denke mit einem "wget irgendwas; [install,make]" hat man mehr Kontrolle)
regards

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Wie php5.x reconfigure, recompile

Post by Roger Wilco » 2008-04-18 18:56

EULE wrote:Was müsste ich denn machen, wenn ich über yast wirklich mal die configure ändern will, zb. mit "--enable-irgendwasXY" ?

Das geht nicht mit YaST.

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: Wie php5.x reconfigure, recompile

Post by daemotron » 2008-04-18 20:01

Doch, geht schon. Source RPM ziehen, Spec File(s) anpassen und eigenes RPM erstellen. Ist aber wahrscheinlich genauso aufwändig wie ganz selber bauen und dann nach /usr/local installieren.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11599
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Wie php5.x reconfigure, recompile

Post by Joe User » 2008-04-18 20:26

jfreund wrote:Doch, geht schon. Source RPM ziehen, Spec File(s) anpassen und eigenes RPM erstellen. Ist aber wahrscheinlich genauso aufwändig wie ganz selber bauen und dann nach /usr/local installieren.

Wenn man sich etwas damit beschäftigt hat, ist es sogar weniger aufwendig und lässt sich für künftige Updates auch einfach automatisieren. Man muss sich nur damit auseinandersetzen und etwas try&error walten lassen. 2002/2003 hatte ich mir ein komplettes primitives Bash-basiertes RPM-Buildsystem für LFS gebastelt, musste mir das nötige Wissen aber auch mühsam erarbeiten, da es hierfür keine umfassende Dokumentation gab/gibt. Wer also nicht (sehr) viel Zeit und Willen zum selbstständigen Recherchieren und Lernen mitbringt, braucht damit gar nicht erst anfangen. Mir half damals das (teilweise) Analysieren und Verstehen des Buildsystems von SUSE weiter. Dauerte mehrere Monate...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

betrazivis
Posts: 32
Joined: 2006-06-01 11:10

Re: Wie php5.x reconfigure, recompile

Post by betrazivis » 2008-04-21 16:47

EULE wrote:Was müsste ich denn machen, wenn ich über yast wirklich mal die configure ändern will, zb. mit "--enable-irgendwasXY" ?


Dann musst du PHP selbst kompilieren. Das ist -wenn man etwas Erfahrung hat- auch nicht schwer, kann unter Umständen aber eine böse Falle sein.

Das ist zwar schon etwas veraltet, weil mir die Zeit fehlt es zu pflegen, aber es sollte unter 10.2 genauso oder zumindest fast genau so ablaufen:

PHP auf einem SuSE(9.2) selbst backen:
http://phpschnipsel.de/?page_id=14

Ein Anleitung für 64 Bit Systeme liegt ebenfalls bei.