Apache tidak mengekspos daftar penangan yang dikonfigurasi. Tidak menggunakan apachectl
, tidak dengan apa pun.
Metode terbaik yang bisa saya temukan untuk mendapatkan daftar penangan yang dikonfigurasi adalah dengan hanya mengambil folder konfigurasi Apache untuk Handler
menangkap semua AddHandler
dan SetHandler
deklarasi.
Untuk host berbasis Debian (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
Untuk host berbasis 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
Perhatikan bahwa tidak semua penangan yang ditemukan sebenarnya terdaftar! Cari di mods-enabled
(Debian) dan abaikan garis mulai dengan #
mempersempit hanya penangan terdaftar.
Seperti yang disarankan oleh Jenny di komentar, baris komentar dapat dihapus dengan memfilter output dengan grep -Pv '^[^ ]*:\s*#'
. Ini adalah perintah terakhir untuk mesin berbasis Debian:
$ grep -ir "Handler" /etc/apache2/* | grep -Pv '^[^ ]*:\s*#'
Dan untuk mesin berbasis Redhat:
$ grep -ir "Handler" /etc/httpd/* | grep -Pv '^[^ ]*:\s*#'
Dalam komentar, pengguna gogoud memberikan cara tambahan untuk menghapus penangan yang berkomentar, sehingga hanya mengembalikan penangan yang terdaftar:
// 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