Apache macht keine Liste der konfigurierten Handler verfügbar. Nicht benutzen apachectl
, nicht mit irgendetwas anderem.
Die beste Methode, um eine Liste der konfigurierten Handler zu erhalten, besteht darin, einfach den Apache-Konfigurationsordner zu durchsuchen Handler
, um alle AddHandler
und SetHandler
Deklarationen abzufangen.
Für Debian-basierte (Ubuntu) Hosts
$ grep -ir "Handler" /etc/apache2/*
mods-enabled/php5.conf: SetHandler application/x-httpd-php
mods-enabled/php5.conf: SetHandler application/x-httpd-php-source
apache2.conf: SetHandler server-status
mods-available/info.conf: SetHandler server-info
mods-available/ldap.conf: SetHandler ldap-status
mods-available/status.conf: SetHandler server-status
mods-available/php5.conf: SetHandler application/x-httpd-php
mods-available/php5.conf: SetHandler application/x-httpd-php-source
sites-available/default: AddHandler cgi-script .cgi
sites-enabled/000-default: AddHandler cgi-script .cgi
Für Redhat-basierte Hosts (Fedora, CentOS)
$ grep -ir "Handler" /etc/httpd/*
conf.d/php.conf: AddHandler php5-script .php
conf/httpd.conf: #AddHandler cgi-script .cgi
conf/httpd.conf: #AddHandler send-as-is asis
conf/httpd.conf: AddHandler type-map var
conf/httpd.conf: #ErrorDocument 404 "/cgi-bin/missing_handler.pl"
conf/httpd.conf: AddHandler type-map var
conf/httpd.conf:# SetHandler server-status
conf/httpd.conf:# SetHandler server-info
conf.d/fcgid.conf: AddHandler fcgid-script fcg fcgi fpl
conf.d/perl.conf:# SetHandler perl-script
conf.d/perl.conf:# SetHandler perl-script
Beachten Sie, dass nicht alle gefundenen Handler tatsächlich registriert sind! Suchen Sie in mods-enabled
(Debian) und ignorieren Sie Zeilen, die damit beginnen #
, nur die registrierten Handler einzugrenzen.
Wie von Jenny in den Kommentaren vorgeschlagen, können kommentierte Zeilen durch Filtern der Ausgabe mit entfernt werden grep -Pv '^[^ ]*:\s*#'
. Hier ist der letzte Befehl für Debian-basierte Maschinen:
$ grep -ir "Handler" /etc/apache2/* | grep -Pv '^[^ ]*:\s*#'
Und für Redhat-basierte Maschinen:
$ grep -ir "Handler" /etc/httpd/* | grep -Pv '^[^ ]*:\s*#'
In den Kommentaren bietet Benutzer gogoud eine zusätzliche Möglichkeit, kommentierte Handler zu entfernen und somit nur registrierte Handler zurückzugeben:
// Debian or Ubuntu
$ grep -R "Handler" /etc/apache2/*enabled* | sed 's/#.*//;/^[^:]*:\s*$/d'
// Redhat, CentoOS, Fedora
$ grep -R "Handler" /etc/httpd/*enabled* | sed 's/#.*//;/^[^:]*:\s*$/d'
find /etc/httpd/ -type f -exec grep -H -v '#' {} \; | grep Handler
AddHandler cgi-script .cgi # Ben needs CGI
.egrep
und einem geeigneten regulären Ausdruck tun, der als Übung für den Leser übrig bleibt (da ich leider gerade etwas bezahlte Arbeit machen muss ...)Dies ist nicht ganz das, was Sie wollen, aber wenn Sie den
server-info
Handler in Ihrer Konfiguration aktivieren , zeigt Ihnen die Ausgabe, welche Module Handler haben und welche nicht, wie folgt:Dies war mit Apache 2.2 möglich, sodass Sie in späteren Versionen möglicherweise eine nützlichere Ausgabe erhalten.
quelle
server-info
. Beachten Sie jedoch, dass die Ausgabe eine statische Seite ist, die vom realen Server kopiert und Ihnen über einen Raspberry Pi bereitgestellt wird.