Apache nie wyświetla listy skonfigurowanych programów obsługi. Nie używam apachectl
, nie z niczym innym.
Najlepszą metodą, jaką udało mi się uzyskać, aby uzyskać listę skonfigurowanych programów obsługi, jest po prostu grepowanie folderu konfiguracyjnego Apache w Handler
celu przechwycenia wszystkich AddHandler
i SetHandler
deklaracji.
Dla hostów opartych na Debianie (Ubuntu)
$ 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
Dla hostów opartych na Redhat (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
Pamiętaj, że nie wszystkie znalezione programy obsługi są w rzeczywistości zarejestrowane! Szukaj w mods-enabled
(Debian) i ignoruj wiersze zaczynające się od, #
aby zawęzić tylko zarejestrowanych handlerów.
Jak sugeruje Jenny w komentarzach, skomentowane linie można usunąć , filtrując dane wyjściowe za pomocą grep -Pv '^[^ ]*:\s*#'
. Oto ostatnie polecenie dla maszyn opartych na Debianie:
$ grep -ir "Handler" /etc/apache2/* | grep -Pv '^[^ ]*:\s*#'
A dla maszyn opartych na Redhat:
$ grep -ir "Handler" /etc/httpd/* | grep -Pv '^[^ ]*:\s*#'
W komentarzach użytkownik gogoud zapewnia dodatkowy sposób na usunięcie komentowanych programów obsługi, zwracając w ten sposób tylko zarejestrowanych programów obsługi:
// 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
pomocą odpowiedniego wyrażenia regularnego, które pozostawia się jako ćwiczenie dla czytelnika (ponieważ niestety muszę teraz wykonać płatną pracę ...)Nie jest to dokładnie to, czego chcesz, ale jeśli włączysz
server-info
moduł obsługi w konfiguracji, dane wyjściowe powiedzą, które moduły mają moduły obsługi, a które nie:Tak było z Apache 2.2, więc być może późniejsze wersje dadzą bardziej przydatne wyjście.
źródło
server-info
. Zauważ jednak, że wyjście to statyczna strona skopiowana z prawdziwego serwera i dostarczona do ciebie przez Raspberry Pi.