Fehler bei PHP-Kompilierung

nightcoding

Aktives Mitglied
Thread Starter
Dabei seit
31.03.2008
Beiträge
1.104
Reaktionspunkte
65
Hi Leute!

Ich versuche gerade mein eigenes PHP zu installieren mit den aktuellen Source-Codes von php.net. Da ich sowas schon öfter auf anderen Unix-Umgebungen gemacht habe, dachte ich mir, kann es nicht zu schwierig sein bis auf die alltäglichen Hürden (fehlende Bibliotheken, etc.).

Ich wollte erstmal nur ein einfaches PHP ohne Schnick-Schnack zum Laufen bekommen, aber selbst da scheitert es schon. Das configure und make läuft ohne Probleme durch. Ein make install läuft auch, hört aber nach folgender Zeile einfach auf:

Code:
Installing PDO headers:        /usr/local/php5/include/php/ext/pdo

Ein sudo apachectl -t gibt dann folgendes aus:

Code:
httpd: Syntax error on line 114 of /private/etc/apache2/httpd.conf: Cannot load /usr/libexec/apache2/libphp5.so into server: dlopen(/usr/libexec/apache2/libphp5.so, 10): no suitable image found.  Did find:\n\t/usr/libexec/apache2/libphp5.so: mach-o, but wrong architecture

Wenn ich mir die Datei mit file libphp5.so anschaue gibts folgendes:

Code:
libphp5.so: Mach-O bundle i386

Soweit scheint also alles ok zu sein. Getestet wurde das ganze auf einem aktuellen MacBook (Intel 2,4 Ghz, 160 GB HDD, 2GB RAM).

Nachdem ich Google gefragt habe, bin ich auf folgende Seiten gestossen:

http://reduxcomputing.com/leopard-php5.html
http://blog.liip.ch/archive/2005/06/08/universal-binary-php.html

Aber auch die Tipps von diesen Seiten führen zu keinem Ergebnis. Ich hab vorerst die gleichen configure Optionen wie die mitgelieferte PHP-Version genommen und MySQL erstmal weggelassen. Eigentlich müsste es doch durchlaufen? Hab selbes auch noch mit einer 5.2.4 Version getestet, gleiches Ergebnis.

Die hauseigene PHP Version von Apple musst ja auch kompiliert werden, kann man das Makefile dafür irgendwo finden? Oder gibts sonst irgendeinen Rat, der mir weiterhelfen würde?

Danke & viele Grüße
Martin


P.S.: Ja, ich könnte die entropy.ch verwenden (hab ich auch, funktioniert ebenfalls nicht und bevor ich da rumsuche warum und wieso nicht, mache ich es lieber selbst, so lernt man das Betriebssystem auch kennen. Das habe ich bei Linux auch gemacht. Erstmal alles von Hand installiert und dann auf die Pakete zurückgegriffen, nur so konnte ich Linux wirklich kennenlernen und selbiges habe ich auf dem Mac vor. Ein Paket von irgendwem installieren kann jeder, aber selbst was zusammenbauen muss man lernen).
 
resolutionM schrieb:
Ich wollte erstmal nur ein einfaches PHP ohne Schnick-Schnack zum Laufen bekommen,

wenn allein das Dein Ziel ist und somit der einzige Grund für ein selber compilieren:

ich empfehle Dir dann eher macports zu installieren und mit

sudo port install apache2+server
sudo port install php5+mysql+pear

einen aktuellen Apache nebst PHP 5.26 und PEAR zu installieren. Wenn Du lieber postgres nutzt, ersetze das +mysql durch +postgresql
 
Hi!

Nein, das alleine ist nicht mein Ziel. Mein Ziel ist es später eine auf mich angepasste PHP Version zum Laufen zu bekommen. Doch dazu will ich es erstmal mit einer sehr schlanken Version probieren, ob der grundsätzliche Kompiliervorgang funktioniert oder nicht.

Soweit ich jetzt rausbekommen habe, ist der Apache2 von Apple als 64bit Version kompiliert, damit wird es natürlich unmöglich ein 32bit PHP einzubinden, was zu oben genannten Fehler führt.

Aber auch ein CFLAG="-arch x86_64" bei der Kompilierung bringt nur Fehler.

Viele Grüße,
Martin
 
hast du eine 64bit cpu?
dann solltest du nicht i386 als target nehmen, sondern x86_64...
der apache ist auch als 64bit kompiliert...

die apple php source findest du hier:
http://www.opensource.apple.com/darwinsource/tarballs/other/apache_mod_php-44.tar.gz

Hi!

Ja, das mit 64bit habe ich jetzt auch rausgefunden :) Danke! Aber auch mit CFLAG="-arch x86_64" funktioniert es nicht. Es führt zum selben Fehler, make install hört bei PDO headers einfach auf.

Viele Grüße,
Martin
 
wie setzt du denn CFLAGS? im make file oder per environement variable? wenn du es per environment setzt, überschreibt das meistens alle anderen flags...
 
Hi!

Also ich hab jetzt mal eine extrem schlanke Version versucht zu installieren mit Hilfe von --disable-all im configure-Kommando und CFLAGS="-arch x86_64" und siehe da, es läuft :D

Jetzt meine Frage: wie krieg ich raus, welche Bibliotheken wo installiert sind? Ist auch irgendwo das configure-Kommando von Apple nachzulesen, dass Apple bei der hauseigenen PHP-Version genommen hat?

Danke & viele Grüße,
Martin
 
wie setzt du denn CFLAGS? im make file oder per environement variable? wenn du es per environment setzt, überschreibt das meistens alle anderen flags...

Hi!

Ich setze es jedesmal im Makefile neu. Also erst ./configure und dann das Makefile bearbeiten. Aber wie gesagt, mit einem --disable-all funktioniert es. Ich denke, dass es an den Bibliotheken liegt. Das heißt ich werde jetzt Schritt für Schritt jede Bibliothek und jede Extension dazu kompilieren, dann weiß ich, welche das Problem ist. Dazu wäre aber das configure-Kommand von Apple hilfreich.

Danke & viele Grüße,
Martin
 
den link hab ich dir doch oben gepostet, aber hilfreich ist es nicht, weil apple da einen eigenen murks für deren build system hat...

du kannst übrigens die extension einzelnen für ein vorhandenes php kompilieren...
einfach in die das ext dir der source, dann ganz normal mit phpize usw (wie man halt php extensions macht) builden...

p.s. ich lass gerade mal spasseshalber auch das compilieren durchlaufen.
hab bei CFLGS_CLEAN im makefile folgendes dazu gepackt:
-arch i386 -arch ppc64 -arch ppc7400 -arch x86_64

hmm, gibt bei den 64bit sachen ein probem mit iconv
 
Zuletzt bearbeitet:
den link hab ich dir doch oben gepostet, aber hilfreich ist es nicht, weil apple da einen eigenen murks für deren build system hat...

du kannst übrigens die extension einzelnen für ein vorhandenes php kompilieren...
einfach in die das ext dir der source, dann ganz normal mit phpize usw (wie man halt php extensions macht) builden...

he he :) Das mit phpize hast du mir schonmal geschrieben. Ganz ehrlich: phpize hab ich noch nie gehört :)

Kannst du mir kurz erläutern worum es da geht? Ich hab das auch schonmal probiert, in dem entsprechenden Source-Verzeichnis phpize ausgeführt und apache neu gestartet. Aber die Extension war trotzdem nicht drin. Auch ein aktivieren in der php.ini hat nichts gebracht und eine entsprechende .so Datei wurde in dem Verzeichnis auch nicht erzeugt.

Danke & Viele Grüße,
Martin
 
phpize alleine reicht ja auch nicht.
das macht man vor dem configure...

phpize
configure --with-apxs2=/usr/sbin/apxs (oder welche flags es noch braucht)
make
sudo make install

wobei man natürlich das "sudo make install" auch weglassen kann und das .so von hand installieren...
 
Hi!

Ok, das configure && make baut aber dann nur die Extension und nicht das komplette PHP, richtig? Was genau macht dann phpize?

Man lernt nie aus :)

Danke & viele Grüße,
Martin


P.S.: PHP 5.2.6 läuft jetzt mit fast allen von mir benötigten Modulen, GD fehlt zum Beispiel noch, aber dafür müssen noch weitere Bibliotheken installiert werden
 
phpize bereitet eine php extension fürs compilieren vor, setzt also die nötigen werte für die installierte php version...
 
Zurück
Oben Unten