Apache không hiển thị danh sách các trình xử lý được cấu hình. Không sử dụng apachectl
, không phải với bất cứ điều gì khác.
Phương pháp tốt nhất mà tôi có thể tìm thấy để có được danh sách các trình xử lý được cấu hình là chỉ cần grep thư mục cấu hình Apache Handler
để bắt tất cả AddHandler
và SetHandler
khai báo.
Dành cho máy chủ dựa trên 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
Dành cho máy chủ lưu trữ dựa trên 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
Lưu ý rằng không phải tất cả các trình xử lý được tìm thấy trên thực tế đã được đăng ký! Tìm kiếm trong mods-enabled
(Debian) và bỏ qua các dòng bắt đầu bằng #
cách thu hẹp chỉ các trình xử lý đã đăng ký.
Theo đề xuất của Jenny trong các bình luận, các dòng bình luận có thể được loại bỏ bằng cách lọc đầu ra với grep -Pv '^[^ ]*:\s*#'
. Đây là lệnh cuối cùng cho các máy dựa trên Debian:
$ grep -ir "Handler" /etc/apache2/* | grep -Pv '^[^ ]*:\s*#'
Và đối với các máy dựa trên Redhat:
$ grep -ir "Handler" /etc/httpd/* | grep -Pv '^[^ ]*:\s*#'
Trong các bình luận, người dùng gogoud cung cấp một cách bổ sung để loại bỏ các trình xử lý nhận xét, do đó chỉ trả về các trình xử lý đã đăng ký:
// 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