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/setip-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äprozessort und Linker zusätzliche Flags übergeben werden:
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 INSTALL 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.
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ähig Version eines PHP-fähigen Apaches
compiliert sein.
Bitte beachten Sie: Sie können auch das
neue Apache ./configure-Script nuten. 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 das 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 muß
--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: