Frage Wie überprüfe ich welche Apache Module aktiviert / installiert sind?


Welches ist die eleganteste Art zu überprüfen, welche Apache-Module aktiviert sind?


337
2018-05-17 19:55


Ursprung




Antworten:


Du bist auf Ubuntu, also versuche es:

apache2ctl -M

414
2018-05-17 20:01



apache2ctl -M funktioniert super - udo
apache2 -M führt zu diesem Fehler apache2: bad user name ${APACHE_RUN_USER} - udo
Fair genug - es ist aufgrund der Tatsache, dass Sie den Befehl nicht ausführen als Apache-Laufzeit Benutzer (wahrscheinlich www-Daten) in der Apache-Konfiguration definiert. Es gibt eine Möglichkeit, dies zu beheben, aber Sie könnten auch bei apache2ctl bleiben. - Linker3000
sudo apache2ctl -M | sort - mmdemirbas
Beachten Sie, dass es viele nützliche Optionen (Flags) gibt apache2ctl aber sie sind weder in der Manpage noch in aufgelistet apache2ctl --help. Das liegt daran, dass sie zugestellt werden httpd. Sie sind in der Liste aufgeführt httpd Dokumentation nur. - Lutz Prechelt


httpd -M sagt Ihnen, welche Module eingebaut oder geteilt sind.


105
2018-05-17 19:56



hmm ... Ich bekomme eine "bash: httpd: Befehl nicht gefunden" beim Starten von httpd -M als root - udo
Geben Sie also den vollständigen Pfad zum httpd ausführbar. - Ignacio Vazquez-Abrams
@ IgnacioVazquez-Abrams: Auf Ubuntu (und anderen Debian-basierten Distributionen) ist der Name apache2und nicht httpddeshalb wird es nicht gefunden. - Daniel Andersson
Apache ist httpd auf redhat. Versuchen Sie eine der anderen Antworten, wenn diese für Sie nicht funktioniert. - Jacks_Depression
CentOS verwendet auch httpd anstelle von apache2 - pedromanoel


Nichts von den obigen Antworten funktioniert, wenn Sie keine Befehle auf dem Remote-Server ausführen können. Wenn Sie nur "Benutzer" -Privilegien haben oder gar keine, versuchen Sie es zu erstellen test.php Skript:

<pre>
<?php
print_r(apache_get_modules());
?>
</pre>

Obwohl es nur funktioniert, wenn PHP als installiert ist mod_php.


35
2018-04-11 09:10



Außerdem sollten Sie dies nicht öffentlich sichtbar machen. Möglicherweise möchten Sie dieses Ergebnis mit der IP eines Administrators auf den Client beschränken. Und Sie werden dieses Skript sobald Sie damit fertig sind entfernen wollen. Weil Verteidigung in der Tiefe; mach es nicht einfacher als es sein muss. - Parthian Shot


Vielleicht wird dies für einige Leute auf freigegebenen Hosts ohne Zugriff auf httpd, apachectl oder Prozesse:

Aktivierte Module: ls /etc/apache2/mods-enabled/

Verfügbare Module: ls /etc/apache2/mods-available/


19
2018-05-04 11:33



Hier ist die komplette Liste, apache2ctl filter sie - jgpATs2w


Sie können auch verwenden apachectl

apachectl -t -D DUMP_MODULES

17
2018-02-06 07:04





Ich denke, hier sind eigentlich drei Fragen. Ich bin mir nicht sicher, was du fragst.

  • Welche Module haben Sie auf der Festplatte? Was sind alle Module, die Sie verwenden können?

Dies wäre (normalerweise) im Modulverzeichnis Ihrer Apache-Distribution, normalerweise / etc / httpd / modules /

  • Für welche Module ist eine bestimmte Instanz konfiguriert, die ausgeführt wird.

Dies kann mit / usr / sbin / httpd -M zumindest für den Apache des Basissystems überprüft werden. Wenn Sie eine bestimmte Konfigurationsdatei überprüfen möchten / usr / sbin / httpd -M -f / pfad / zu / config / file

  • Was ist in einem laufenden Apache

Um eine Menge Informationen zu erhalten, können Sie es mit sehen http: // Computername / Server-info / Dies ist nicht standardmäßig konfiguriert, Sie müssten konfigurieren es in. Es ist ein bisschen ein Info-Leck, also konfigurieren Sie es so nur lokale Leute können es sehen.

Wenn Sie sich auf dem Computer befinden und Zugriff auf den aktiven Benutzer haben, können Sie auch sehen, was geladen wurde, indem Sie den Prozess überprüfen. Sie finden den übergeordneten Prozess mit:

ps -ef | gawk '/httpd/ && $3 == 1{print $2}'

Dann check out

cat /proc/PID_FROM_ABOVE/maps

10
2018-05-17 20:57



Nützliche Informationen, aber weil das OP Ubuntu verwendet, sind die Dateinamen und Speicherorte unterschiedlich - zum Beispiel: / usr / sbin / apache2 statt httpd und ps -ef | gawk '/ apache2 / && $ 3 == 1 {print $ 2}' Der Speicherort der Module wird anders gehandhabt, mit mods-available und mods-aktivierten Unterordnern - Linker3000
Danke @ Linker3000 ... Du hast Recht, das ist für RedHat / Centos, ich werde deinen Kommentar dazu geben, wie man zu Ubuntu konvertiert - Rich Homolka


Wenn Sie auf Redhat / CentOS sind, httpd wird anstelle von verwendet apache2ctl.

Dies bedeutet, dass Sie die verwenden müssen

httpd -M

Jedoch, httpd ist fast nie in dem Weg, den Sie erwarten.

Ich kann auf CentOS 5.8 den tatsächlichen Pfad bestätigen /usr/sbin/httpd.

/usr/sbin/httpd -M

Aber wenn das nicht der Weg ist, kannst du es entdecken. Hier ist, wie ich es geschafft habe.

Zuerst überprüfte ich den Daemon, mit dem er gesteuert wurde.

less /init.d/httpd

Um Linie 40isch

# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/sbin/apachectl
httpd=${HTTPD-/usr/sbin/httpd}
prog=httpd

Was mir genau gesagt hat, wo ich es finden kann. Hoffe das hilft.


10
2018-03-11 18:41