mod_rewrite

mark

Registered User
Hallo!

Ich versuche, mod_rewrite in meinem Apache (1.3.28) auf meinem vServer ans Laufen zu bekommen.

Die Konfiguration mit
./configure --prefix=/www --enable-module=rewrite --enable-module=so

ergibt u.a. das hier
+ adding selected modules
o rewrite_module uses ConfigStart/End
disabling DBM support for mod_rewrite
(perhaps you need to add -ldbm, -lndbm or -lgdbm to EXTRA_LIBS)

"make", "make_install" und anschließendes "/www/bin/apachectl configtest
" führt dann zu folgendem Fehler
Syntax error on line 209 of /www/conf/httpd.conf
Cannot load /usr/lib/apache/mod_rewrite.so into server /usr/lib/apache/mod_rewrite.so undefined symbol __db_ndbm_open

Google führte mich zu dem Tipp, das folgende zu verwenden
EXTRA_LIBS="-ldbm" ./configure --prefix=/www --enable-module=rewrite --enable-module=so
führt zu

======== Error Output for sanity check ========
cd ..; gcc -DLINUX=22 -DNO_DBM_REWRITEMAP -DUSE_HSREGEX -DUSE_EXPAT -I./lib/expat-lite `./apaci` -o helpers/dummy helpers/dummy.c -ldbm -lm
/usr/bin/ld cannot find -ldbm
collect2 ld returned 1 exit status
make *** [dummy] Error 1
============= End of Error Report =============

Hat jemand eine Idee, was ich einstellen muss, damit ich Apache mit mod_rewrite kompilieren kann?

Gruß und Danke
Mark
 
mark said:
Hat jemand eine Idee, was ich einstellen muss, damit ich Apache mit mod_rewrite kompilieren kann?

Gegenfrage:
Warum willst Du Apache neu compilieren?
Das rewrite-Modul ist doch bereits vorhanden.

Ok, aber zu Deiner Frage:
Apache braucht für mod_rewrite die GNU-Database (gdbm).
Diese ist unter Linux standartmässig installiert. Aber zum Compilieren von Progs, die diese Library brauchen, brauchst Du die Headerfiles. Die sind nicht immer installiert. gdbm-devel-1.8.0-14.i386.rpm müsste die richtige Version sein.
Ziehen, installieren, apache neu compilieren, hier schreiben ob's geklappt hat.

PS: Unter http://www.delouw.ch/linux/apache.phtml gibt es die u.a. eine deutsche Apache-Compile-HowTo.

huschi the husch
 
Huschihusch said:
Warum willst Du Apache neu compilieren?

Weil ich eine neuere PHP-Version brauchte und PHP mit dem "alten" Apache nicht kompilieren wollte. Das war dann soweit auch kein Problem, nur brauchte ich jetzt zusätzlich noch mod_rewrite.

Huschihusch said:
Apache braucht für mod_rewrite die GNU-Database (gdbm).

Das hat schon mal weitergeholfen, ./configure läuft jetzt ohne Fehler durch. "configtest" liefert aber immer noch das hier (für die "LoadModule"-Zeile in der httpd.conf):
Syntax error on line 209 of /www/conf/httpd.conf:
Cannot load /usr/lib/apache/mod_rewrite.so into server: /usr/lib/apache/mod_rewrite.so: undefined symbol: __db_ndbm_open

Für weitere Infos bin ich also dankbar.

Mark
 
mark said:
Cannot load /usr/lib/apache/mod_rewrite.so into server: /usr/lib/apache/mod_rewrite.so: undefined symbol: __db_ndbm_open
Das sieht so aus, als ob Du immer noch die ndbm statt der gdbm links.
Schau die ./configure nochmal genau an. Irgendein Parameter an dem man die db-lib einstellen kann? (z.B. -ldbm -lndbm -lgdbm -ldb)
Oder in dem von ./configure geschaffenen Makefile die Library ändern.
Ansonsten hillft nur das Installieren der ndbm inkl. der Headerfiles. Sollte aber nicht nötig sein.

huschi the husch
 
Huschihusch said:
Das sieht so aus, als ob Du immer noch die ndbm statt der gdbm links.

Das Problem war die mod_rewrite.so.

Ich hab die jetzt mal neu kompiliert und jetzt läuft's.

Falls nochmal jemand das Problem hat, hier kurz die Anleitung:
- ins Verzeichnis mit den Sourcen von mod_rewrite wechseln
- make mod_rewrite.so
- gcc -shared -o mod_rewrite.so mod_rewrite.lo -lgdbm
- mod_rewrite.so nach /usr/lib/apache/ kopieren

Schönen Dank nochmal für die Tipps!

Mark
 
Schön das man helfen konnte.

Übrigends:
mark said:
Weil ich eine neuere PHP-Version brauchte und PHP mit dem "alten" Apache nicht kompilieren wollte.
Das lag wahrscheinlich an fehlenden Header-Dateien von apache... :oops:
Die reine installation der richtigen Devel-Version hätte schon gereicht um PHP als apache-modul zu kompilieren.

huschi the husch
 
Back
Top