PHP  
downloads | documentation | faq | getting help | mailing lists | | php.net sites | links | my php.net 
search for in the  
<InstallationPHP benutzen>
view the version of this page
Last updated: Sat, 19 Apr 2003

Kapitel 49. Probleme bei der Compilierung

Diese Sektion behandelt die meistverbreiteten Fehler, die beim Compilieren von PHP auftauchen.

1. Ich habe mir die aktuellste Version von PHP mit Hilfe des Anonymous-CVS-Dienstes besorgt, kann aber kein configure-Script finden.
2. Ich habe Probleme. PHP f�r den Apache zu konfigurieren. Er beschwert sich, dass er die Datei httpd.h nicht finden kann, obwohl sie sich genau dort befindet, wo ich es angegeben habe.
3. When I run configure, it says that it can't find the include files or library for GD, gdbm, or some other package!
4. Wenn die Datei language-parser.tab.c compiliert wird, erscheinen Fehler, die yytname undeclared besagen.
5. Wenn ich make ausf�hre, scheint alles normal zu verlaufen, aber sobald es versucht, die Applikation zu linken, beschwert es sich, einige Dateien nicht finden zu k�nnen.
6. Wenn PHP gelinkt wird, berschwert es sich �ber undefinierte Referenzen.
7. Wie wird PHP mit Apache 1.3.x compiliert?
8. Ich habe die Schritte, die zur Installation des Apache-Modules unter UNIX n�tig sind, aber wenn ich mit meinem Browser PHP-Scripts aufrufe, werde ich aufgefordert, die Dateien zu speichern.
9. Es heisst, es muss --activate-module=src/modules/php4/libphp4.a benutzt werden, aber diese Datei existiert nicht, also habe ich es zu --activate-module=src/modules/php4/libmodphp4.a ge�ndert, aber es funktioniert nicht.
10. Wenn ich versuche, den Apache mit PHP als statisches Modul mittels --activate-module=src/modules/php4/libphp4.a zu compilieren, kommt die Fehlermeldung, mein Compiler sei nicht ANSI-Konform.
11. Wenn ich versuche, PHP mittels der Option --with-apxs zu compilieren, bekomme ich komische Fehlermeldungen.
12. W�hrend des make bekomme ich Fehler in microtime und jede Menge RUSAGE_-Zeugs.
13. Ich m�chte mein PHP aktualisieren. Wo kann ich die ./configure-Zeile finden, die von meiner aktuellen PHP-Version verwendet wird?
14. Wenn ich PHP mit der GD-Library compiliere, tauchen seltsame Compilerfehler auf oder PHP startet nicht.

1. Ich habe mir die aktuellste Version von PHP mit Hilfe des Anonymous-CVS-Dienstes besorgt, kann aber kein configure-Script finden.

Sie m�ssen das GNU autoconf-Paket installiert haben, damit das configure-Script aus configure.in generiert werden kann. Mittels ./buildconf im Hauptverzeichnis des vom CVS-Server gezogenen Source-Trees wird das configure-Script generiert. Es ist zu beachten, dass das configure-Script bei einer ge�nderten configure.in nicht neu generiert wird, es sei denn, configure wird mit dem Parameter --enable-maintainer-mode aufgerufen. Es sollte also darauf geachtet werden, dass das configure-Script manuell neu generiert wird, wenn configure.in ver�ndert wurde. Ein Symptom f�r eine Ver�nderung des configure.in ist, wenn Dinge wie @VARIABLE@ im Makefile auftachen, nachem configure oder config.status ausgef�hrt wurde.

2. Ich habe Probleme. PHP f�r den Apache zu konfigurieren. Er beschwert sich, dass er die Datei httpd.h nicht finden kann, obwohl sie sich genau dort befindet, wo ich es angegeben habe.

Sie m�ssen dem configure/setup-Script die Top-Level-Pfad des Apache-Source-Trees mitteilen. Das bedeutet, dass z.B. --with-apache=/path/to/apache korrekt ist, --with-apache=/path/to/apache/src jedoch nicht.

3. When I run configure, it says that it can't find the include files or library for GD, gdbm, or some other package!

Es ist m�glich, das configure-Script so anzupassen, dass es nicht nur in Standard-Pfaden nach Headerdatei und Bibliotheken sucht, in dem dem C Pr�prozessor und Linker zus�tzliche Flags �bergeben werden:

CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure
Wenn Sie (aus welchem Grund auch immer) eine csh-Variante als Login-Shell verwenden:
env CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure

4. Wenn die Datei language-parser.tab.c compiliert wird, erscheinen Fehler, die yytname undeclared besagen.

Sie m�ssen Bison updaten. Die aktuellste Version findet sich unter .

5. Wenn ich make ausf�hre, scheint alles normal zu verlaufen, aber sobald es versucht, die Applikation zu linken, beschwert es sich, einige Dateien nicht finden zu k�nnen.

Einige alte Versionen von make platzieren die compilierten Versionen der Dateien nicht in das korrekte Verzeichnis. Versuchen Sie, das Problem zu l�sen, indem sie zun�chst mittels cp *.o functions die Dateien an der vorgesehenen Platz kopieren, und anschlie�end make noch einmal ausf�hren. Sollte es dann funktionieren, empfehlen wir, Ihre Version von GNU make zu aktualisieren.

6. Wenn PHP gelinkt wird, berschwert es sich �ber undefinierte Referenzen.

Schauen Sie sich die Link-Zeile an, und stellen Sie sicher, das alle n�tigen Bibliotheken am Ende mit eingeschlossen werden. H�ufig werden '-ldl' und Datenbankbibliothken vergessen.

Wenn Sie mit Apache 1.2.x linken, haben Sie daran gedacht, die ben�tigten Informationen in die EXTRA_LIBS-Zeile des Konfigurationsscriptes einzuf�gen, und haben Sie das configure-Script des Apache wiederholt ausgef�hrt? Weitere Informationen dazu finden Sie im File Ihrer Distribution.

Einige Leute haben berichtet, dass sie '-ldl' unmittelbar nach libphp4.a einf�gen mu�ten, wenn sie PHP mit Apache gelinkt haben.

7. Wie wird PHP mit Apache 1.3.x compiliert?

Folgen Sie diesen Schritten:

  • Besorgen Sie sich die letzte Version von Apache unter .

  • Entpacken Sie die Datei zum Beispiel unter /usr/local/src/apache-1.3.

  • Compilieren Sie zun�chst PHP, zum Beispiel mit ./configure --with-apache=/<path>/apache-1.3 (ersetzen Sie <path> mit dem Pfad zu Ihrem apache-1.3-Verzeichnis.

  • F�hren Sie make, gefolgt von einem make install aus, und kopieren die ben�tigten Dateien in den Apache-Tree.

  • Wechseln Sie in das Verzeichnis /<path>/apache-1.3/src und bearbeiten die Datei Configuration. F�gen Sie AddModule modules/php4/libphp4.a hinzu.

  • F�hren Sie ./Configure, gefolgt von make aus.

  • Nun sollte eine lauff�hige Version eines PHP-f�higen Apaches compiliert sein.

Bitte beachten Sie: Sie k�nnen auch das neue Apache ./configure-Script nutzen. Weitere Informationen dazu finden sie in der Datei README.configure, die der Apache-Distribution beiliegt. Auch in der Datei INSTALL Ihrer PHP-Distribution finden sich Informationen dazu.

8. Ich habe die Schritte, die zur Installation des Apache-Modules unter UNIX n�tig sind, aber wenn ich mit meinem Browser PHP-Scripts aufrufe, werde ich aufgefordert, die Dateien zu speichern.

Das bedeutet, dass das PHP-Modul nicht aufgerufen wird. Sie sollten folgende Dinge �berpr�fen:

  • Stellen Sie sicher, dass das httpd-Binary, das Sie ausf�hren, tats�chlich das neue httpd-Binary ist, das sie compiliert haben. Um das zu tun versuchen Sie, /path/to/binary/httpd -l auszuf�hren.

    Wenn mod_php4.c nicht auftaucht, f�hren Sie nicht das korrekte Binary aus. Finden und installieren Sie das korrekte Binary.

  • Stellen Sie sicher, dass Sie den korrekten Mime-Type in ihrer Apache .conf-Datei angegeben haben. Er sollte AddType application/x-httpd-php3 .php3 (f�r PHP 3)

    oder AddType application/x-httpd-php .php (f�r PHP 4) lauten.

    Stellen Sie ebenfalls sicher, dass diese AddType-Anweisung sich nicht in einem <Virtualhost> oder <Directory> Block befindet.

  • Der Standardplatz der Apache Konfigurationsdateien hat sich von Apache 1.2 zu Apache 1.3 ver�ndert. Sie sollten sicherstellen, das die Konfigurationsdatei, zu der sie die AddType-Anweisung hinzugef�gt haben diejenige ist, die auch verarbeitet wird. Sie k�nnen einen offensichtlichen Syntaxfehler oder eine andere eindeutige �nderung in Ihre httpd.conf einfbauen, um dies zu �berpr�fen.

9. Es heisst, es muss --activate-module=src/modules/php4/libphp4.a benutzt werden, aber diese Datei existiert nicht, also habe ich es zu --activate-module=src/modules/php4/libmodphp4.a ge�ndert, aber es funktioniert nicht.

Die Datei libphp4.a soll nicht existieren, der Apache wird es generieren.

10. Wenn ich versuche, den Apache mit PHP als statisches Modul mittels --activate-module=src/modules/php4/libphp4.a zu compilieren, kommt die Fehlermeldung, mein Compiler sei nicht ANSI-Konform.

Das ist eine irref�hrende Fehlermeldung des Apache, die in aktuellen Versionen behoben ist.

11. Wenn ich versuche, PHP mittels der Option --with-apxs zu compilieren, bekomme ich komische Fehlermeldungen.

Hier sind drei Dinge zu �berpr�fen: Wenn Apache das apxs Perlscript generiert, werden manchmal aus unerfindlichen Gr�nden nicht die richtigen Compiler-Flags verwendet. �ffnen Sie Ihr apxs-Script und �berpr�fen es auf Zeilen, die �hnlich wie folgende aussehen:

my $CFG_CFLAGS_SHLIB  = ' ';          # substituted via Makefile.tmpl
my $CFG_LD_SHLIB      = ' ';          # substituted via Makefile.tmpl
my $CFG_LDFLAGS_SHLIB = ' ';          # substituted via Makefile.tmpl
Wenn Sie so etwas sehen, haben Sie Ihr Problem gefunden. �ndern Sie die Zeilen wie folgt:
my $CFG_CFLAGS_SHLIB  = '-fpic -DSHARED_MODULE'; # substituted via Makefile.tmpl
my $CFG_LD_SHLIB      = 'gcc';                   # substituted via Makefile.tmpl
my $CFG_LDFLAGS_SHLIB = q(-shared);              # substituted via Makefile.tmpl
Das zweite m�gliche Problem kann unter Red Hat 6.1 und 6.2 auftauchen. Das apxs-Script, das Red Hat ausliefert, ist fehlerhaft. Suchen sie nach dieser Zeile:
my $CFG_LIBEXECDIR    = 'modules';         # substituted via APACI install
�ndern Sie diese Zeile in
my $CFG_LIBEXECDIR    = '/usr/lib/apache'; # substituted via APACI install
Zuguterletzt, wenn sie Apache neu installieren, f�gen Sie ein make clean nach dem ./configure und vor dem make ein.

12. W�hrend des make bekomme ich Fehler in microtime und jede Menge RUSAGE_-Zeugs.

Wenn w�hrend des make-Teils der Installation Probleme auftauchen, die wie folgt aussehen:

microtime.c: In function `php_if_getrusage':
microtime.c:94: storage size of `usg' isn't known
microtime.c:97: `RUSAGE_SELF' undeclared (first use in this function)
microtime.c:97: (Each undeclared identifier is reported only once
microtime.c:97: for each function it appears in.)
microtime.c:103: `RUSAGE_CHILDREN' undeclared (first use in this function)
make[3]: *** [microtime.lo] Error 1
make[3]: Leaving directory `/home/master/php-4.0.1/ext/standard'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/master/php-4.0.1/ext/standard'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/master/php-4.0.1/ext'
make: *** [all-recursive] Error 1

ist Ihr System besch�digt. Sie m�ssen Ihr /usr/include reparieren, indem sie das glibc-devel-Paket installieren, dessen Version mit der Ihrer glibc �bereinstimmt. Das hat absolut nichts mit PHP zu tun. Um sich selbst davon zu �berzeugen, f�hren Sie folgenden simplen Test durch:

$ cat >test.c <<X
#include <sys/resource.h>
X
$ gcc -E test.c >/dev/null
Wenn hier Fehler auftauchen, wissen sie, dass Ihre include-Dateien fehlen oder fehlerhaft sind.

13. Ich m�chte mein PHP aktualisieren. Wo kann ich die ./configure-Zeile finden, die von meiner aktuellen PHP-Version verwendet wird?

Entweder schauen sie in die config.nice-Datei im Source-Tree ihrer aktuellen PHP-Version nach, oder Sie f�hren folgendes Script aus:

<?php phpinfo(); ?>
Zu Beginn der Datei wird die ./configure-Zeile angezeigt.

14. Wenn ich PHP mit der GD-Library compiliere, tauchen seltsame Compilerfehler auf oder PHP startet nicht.

Stellen Sie sicher, dass PHP und die GD-Library gegen die selben Bibliotheken wie libPNG gelinkt sind.



User Contributed Notes
Probleme bei der Compilierung
add a note
jimsteele at nospam dot com
14-Oct-2001 08:43

Defining the right environment variables for my Apache "make" invocation allowed the correct "apxs" file to be generated for me.  Your mileage may vary.

cd ../apache_1.3.22
CFLAGS_SHLIB="-fpic -DSHARED_MODULE" \
LD_SHLIB=gcc \
 LDFLAGS_MOD_SHLIB="-shared" \
 make

gorilladf at hotmail dot com
11-Jul-2002 12:11

PHP 4.2.1 and Apache 2.0.39 to work

Finally! Wow, let me see if I can get this right. Here is what I did:

1) Downloaded and installed the following:
Latest STABLE php from snaps.php.net (dated 7/10/02 9 AM)
pth-1.4.1.tar.gz from ftp.gnu.org/gnu/pth/ (this 'may' have helped!)

2) reconfigured, apache using:
./configure --prefix=/path/to/apache --with-module=so
make clean, make, make install
(NOTE: I don't think this was needed, but I wanted clean! Also didn't start it yet.)

3) installed the new STABLE php 4.2.1 and made some changes:
In 'path to php'/ext/standard commented out in microtime.c line 31
"#ifedf HAVE_SYS_RESOURCE_H" to "/* #ifedf HAVE_SYS_RESOURCE_H */"  NO quotes!
and also line 33
"#endif" to "/* #endif */" No Quotes!
I don't know what the problem was. I knew it needed the include on line 32.
so this just puts the darn thing in!
The previous problems in php_functions.c seemed to be fixed, so no change there.

4) config php:
run 'make distclean'
./configure --with-mysql --with-zlib --with-apxs2=/usr/local/apache/bin/apxs
Note: /usr/local/apache is my path! Yours could be /I/like/grandma/bin/apxs!
make clean, make
NOTE: I get like 6 warnings about RLIM_INFINITY being redefined during the make.
I believe it has to do with different versions of my resource.h.
I think this is due to uprading my kernel. Not to worry if you get this.
It is just a warning. Has to do with the declaration of the size of it I think.
make install

5) back to /usr/local/apache/conf and edit httpd.conf
make sure that 'AddType application/x-httpd-php .php' is there
IT WASN'T! Rumor says it auto places it. HEH!
Also make sure 'LoadModule php4_module modules/libphp4.so' is there.
It was. Huh??? Oh well.
apachectl start
a edit quick helloworld.php
open fav web browser, bang!
Scream Haleluyah while dancing a jig! People in office look at you funny.

Man I hope I save someone some time!

SprSquish at hotmail dot com
26-Sep-2002 07:10

I was having some issues with building PHP with GD. After some search on the web I found out that all I needed to do was remove the config.cache file then run ./configure with my options and I was all set. Here's the page that helped me out on this:
dale at botkin dot org
04-Nov-2002 09:20

If you have customized your Apache to lie about its version number, you may need to edit configure to skip the version number check.  Just /APACHE_VERSION in configure to find the instance(s) where configure checks to make sure you have the right combination of --with-apxs or --with_apxs2 and Apache 1.3 or 2.0.  Assuming you're smart enough to remember which version of Apache you have, you can just delete or comment out the version check and continue to march.
add a note

<InstallationPHP benutzen>
 Last updated: Sat, 19 Apr 2003
show source | credits | mirror sites 
Copyright © 2001-2003 The PHP Group
All rights reserved.
This mirror generously provided by: /
Last updated: Mon May 12 21:12:21 2003 CEST