Diese Sektion behandelt die meistverbreiteten Fehler, die beim Kompilieren von PHP auftauchen.
      Sie müssen das GNU autoconf-Paket installiert haben, damit das
      Konfigurationsskript aus configure.in generiert
      werden kann. Führen Sie ./buildconf im
      Hauptverzeichnis der vom Git-Server geladenen Quellen aus, wird das
      configure-Skript generiert. (Solange Sie 
      configure nicht mit der --enable-maintainer-mode-Option
      aufrufen, wird das Konfigurationsskript nicht neu erstellt, wenn
      die configure.in-Datei aktualisiert wird.
      Es sollte also darauf geachtet werden, dass das configure-Skript manuell
      neu generiert wird, wenn Sie feststellen, dass configure.in
      verändert wurde. Ein Symptom für eine solche Veränderung ist, wenn Dinge
      wie @VARIABLE@ im Makefile auftachen, nachdem configure oder
      config.status ausgeführt wurde.)
     
Sie müssen dem configure/setup-Skript den Top-Level-Pfad des Apache-Quellbaums mitteilen. Das bedeutet, dass z.B. --with-apache=/path/to/apache anstatt --with-apache=/path/to/apache/src angegeben werden muss.
./configure),
      mit einem Fehler wie dem Folgenden konfrontiert:
     
     
      Stellen Sie sicher, dass Sie Installation gründlich gelesen haben und beachten Sie, dass sowohl flex als auch bison zum Kompilieren von PHP installiert sein müssen. Abhängig von Ihrem System müssen Sie flex und bison entweder aus einer Quelle oder einem Paket wie z.B. RPM installieren.
Es ist möglich, das configure-Skript so anzupassen, dass es nicht nur in Standard-Pfaden nach Headerdatei und Bibliotheken sucht, indem dem C-Präprozessor und -Linker zusätzliche Flags übergeben werden:
    CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure
    env CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure
yytname
      undeclared.
     
    Sie müssen Bison updaten. Die aktuelle Version findet sich unter » http://www.gnu.org/software/bison/bison.html.
Einige alte Versionen von make platzieren die kompilierten Versionen der Dateien nicht in das functions-Verzeichnis im gleichen Verzeichnis. Versuchen Sie, cp *.o functions auszuführen und danach erneut make zu starten, um zu prüfen, ob sich das Problem so lösen lässt. Sollte es dann funktionieren, empfehlen wir, Ihre Version von GNU make zu aktualisieren.
Schauen Sie sich die Link-Zeile an und stellen Sie sicher, dass alle nötigen Bibliotheken am Ende mit eingeschlossen werden. Häufig werden '-ldl' und Datenbankbibliotheken vergessen.
Einige Leute haben berichtet, dass sie '-ldl' unmittelbar nach libphp4.a einfügen mussten, wenn sie PHP mit Apache gelinkt haben.
Das bedeutet, dass das PHP-Modul nicht aufgerufen wird. Sie sollten folgende drei Dinge überprüfen:
/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.
        
       Apache .conf-Datei angegeben haben. Er
         sollte AddType application/x-httpd-php .php
         lauten.
        
        
         Stellen Sie ebenfalls sicher, dass diese AddType-Anweisung sich nicht in
         einem <Virtualhost>- oder <Directory>-Block befindet, da dies
         verhindern würde, dass sie sich auf das Verzeichnis Ihres Testskript
         auswirkt.
        
       --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 gar nicht existieren, Apache wird sie selbst generieren.
--activate-module=src/modules/php4/libphp4.a zu
      kompilieren, kommt die Fehlermeldung, mein kompiler sei nicht
      ANSI-konform.
     
    Das ist eine irreführende Fehlermeldung des Apache, die in aktuellen Versionen behoben ist.
Hier sind drei Dinge zu überprüfen: Wenn Apache das apxs-Perl-Skript generiert, werden manchmal aus unerfindlichen Gründen nicht die richtigen Kompiler- und Variablen-Flags verwendet. Suchen Sie Ihr apxs-Skript (probieren Sie das Kommando which apxs); oft liegt es unter /usr/local/apache/bin/apxs oder /usr/sbin/apxs. Öffnen Sie es und überprüfen Sie 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
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
my $CFG_LIBEXECDIR = 'modules'; # substituted via APACI install
my $CFG_LIBEXECDIR = '/usr/lib/apache'; # substituted via APACI install
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 Ihre /usr/include-Dateien reparieren, indem Sie ein 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 einfachen Test durch:
$ cat >test.c <<X #include <sys/resource.h> X $ gcc -E test.c >/dev/null
make bekomme ich einen Fehler
      wie den Folgenden: ext/mysql/libmysqlclient/my_tempnam.o(.text+0x46):
      In function my_tempnam': /php4/ext/mysql/libmysqlclient/my_tempnam.c:103: the
      use of tempnam' is dangerous, better use mkstemp'
      Was habe ich falsch gemacht?
     
    
      Zuerst ist es wichtig, dass Sie sich darüber im Klaren sind, dass dies
      eine Warnung ist und kein Fehler. Weil dies aber oft
      die letzte sichtbare Ausgabe von make ist, sieht es
      oft wie ein Fehler aus. Natürlich bricht der Kompiler ab, falls Sie ihn
      so konfiguriert haben, dass er bei Warnungen abbrechen soll. Beachten
      Sie, dass die MySQL-Unterstützung standardmäßig aktiviert ist.
     
Hinweis:
Bei PHP 4.3.2 sehen Sie auch den folgenden Text nachdem das Kompilieren (make) beendet wurde:
Build complete.
(It is safe to ignore warnings about tempnam and tmpnam).
Entweder schauen Sie in die config.nice-Datei im Quellbaum Ihrer aktuellen PHP-Version nach, oder Sie führen folgendes Skript aus:
<?php phpinfo(); ?>Stellen Sie sicher, dass PHP und die GD-Bibliothek gegen die selben Bibliotheken wie libPNG gelinkt sind.
      Die Verwendung von nicht-GNU-Programmen beim Kompilieren kann Probleme
      verursachen. Verwenden sie GNU-Programme um sicherzustellen, dass das
      Kompilieren fehlerfrei klappt. Z.B. wird auf Solaris die Verwendung der
      SunOS-BSK-kompatiblen Version oder der Solaris-Version von
      sed nicht funktionieren. Verwenden Sie stattdessen
      die GNU- oder Sun-POSIX-(xpg4-)Version von sed.
      Links: » GNU sed,
      » GNU flex, und
      » GNU bison.
     
