Antworten:
Du bist auf Ubuntu, also versuche:
apache2ctl -M
apache2: bad user name ${APACHE_RUN_USER}
sudo apache2ctl -M | sort
apache2ctl
jedoch weder in der Manpage noch in aufgeführt sind apache2ctl --help
. Das ist , weil sie durch zu übergeben sind httpd
. Sie sind nur in der httpd-Dokumentation aufgeführt .
httpd -M
wird Ihnen sagen, welche Module eingebaut oder geteilt sind.
httpd
ausführbaren Datei an.
apache2
und nicht httpd
, weshalb er nicht gefunden wird.
Die obigen Antworten funktionieren nicht, wenn Sie keine Befehle auf einem Remote-Server ausführen können. Wenn Sie nur "Benutzer" -Rechte oder gar keine haben, versuchen Sie, ein test.php
Skript zu erstellen :
<pre>
<?php
print_r(apache_get_modules());
?>
</pre>
Dies funktioniert jedoch nur, wenn PHP als installiert ist mod_php
.
Vielleicht für einige Leute bei gemeinsamen Rechnern ohne Zugriff auf diese helfen httpd
, apachectl
oder Prozesse:
Aktivierte Module: ls /etc/apache2/mods-enabled/
Verfügbare Module: ls /etc/apache2/mods-available/
Sie können auch apachectl verwenden
apachectl -t -D DUMP_MODULES
Ich denke, hier gibt es tatsächlich drei Fragen. Ich bin nicht sicher, wonach du fragst.
Dies ist (normalerweise) im modules-Verzeichnis Ihrer Apache-Distribution, normalerweise / etc / httpd / modules /.
Dies kann mit / usr / sbin / httpd -M überprüft werden, zumindest für das Basissystem Apache. Wenn Sie eine bestimmte Konfigurationsdatei / usr / sbin / httpd -f / path / to / config / file überprüfen möchten
Um viele Informationen zu erhalten, können Sie sie unter http: // machinename / server-info / anzeigen. Dies ist nicht standardmäßig konfiguriert, Sie müssen es in konfigurieren . Es ist ein kleines Informationsleck, also konfigurieren Sie es so können nur Einheimische es sehen.
Wenn Sie sich auf dem Computer befinden und als aktiver Benutzer angemeldet sind, können Sie auch sehen, was geladen ist, 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
Wenn Sie auf Redhat / CentOS sind, httpd
wird anstelle von verwendet apache2ctl
.
Dies bedeutet, dass Sie die verwenden müssen
httpd -M
Befindet sich httpd
jedoch fast nie auf dem Weg, den Sie erwarten.
Ich kann auf CentOS 5.8 bestätigen, dass der tatsächliche Pfad ist /usr/sbin/httpd
.
/usr/sbin/httpd -M
Aber wenn das nicht der Weg ist, können Sie es entdecken. Hier ist, wie ich das konnte.
Zuerst habe ich den Daemon überprüft, der zur Steuerung verwendet wird.
less /init.d/httpd
Um die Linie 40ish
# 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.
Listet alle aktivierten Module auf
a2query -m
Auf meinem gentoo kann ich apache2ctl modules
die aufgelisteten Module ausführen und sehen.
Überprüfung aus dem PHP-Skript (für mod_xsendfile):
if (in_array(PHP_SAPI, array('apache','apache2filter','apache2handler'))
&& in_array('mod_xsendfile', apache_get_modules()))
\\doSomething();
Die Prüfung für PHP_SAPI soll ausschließen, wenn PHP als CGI ausgeführt wird, da apache_get_modules () in diesem Kontext nicht funktioniert. Wenn dies unter PHP <5.0.0 ausgeführt wird, wird nur der apache2handler
Kontext das erwartete Ergebnis liefern.
Ich habe ein kleines Python-Skript erstellt, um Ihnen dabei zu helfen. Bitte werfen Sie einen Blick auf https://github.com/zioalex/unused_apache_modules
Das können Sie davon erwarten:
curl http://localhost/server-info > http_modules_test.txt
cat http_modules_test.txt| python find_unused_apache_mod.py
1
Module name mod_python.c
Configuration Phase Participation: 4
Request Phase Participation: 11
Current Configuration: 3
2
Module name mod_version.c
Configuration Phase Participation: 0
Request Phase Participation: 0
Current Configuration: 1
3
Module name mod_proxy_connect.c
Configuration Phase Participation: 0
Request Phase Participation: 0
Current Configuration: 0
To remove safely:
['mod_proxy_connect.c']
POPPED: mod_proxy_connect.c
To KEEP: ['mod_python.c', 'mod_version.c', 'mod_proxy_connect.c']