Как проверить, какие модули apache включены /установлены?

Какой самый элегантный способ проверить, какие модули apache включены?

334 голоса | спросил udo 17 Maypm11 2011, 23:55:14

11 ответов


412

Вы на Ubuntu, поэтому попробуйте:

apache2ctl -M
ответил Linker3000 18 Mayam11 2011, 00:01:43
104

httpd -M расскажет вам, какие модули встроены или совместно используются.

ответил Ignacio Vazquez-Abrams 17 Maypm11 2011, 23:56:42
35

Ничто из вышеприведенных ответов не работает, если вы не можете запускать команды на удаленном сервере. Если у вас есть только привилегии пользователя или нет, попробуйте создать сценарий test.php:

& л; предварительно >
& Lt;? PHP
print_r (apache_get_modules ());
? >
& Lt; /предварительно >

Хотя он будет работать только в том случае, если PHP установлен как mod_php.

ответил yatsa 11 PMpWed, 11 Apr 2012 13:10:50 +040010Wednesday 2012, 13:10:50
18

Возможно, это поможет некоторым людям на общих хостах без доступа к httpd, apachectl или процессов:

Включенные модули: ls /etc /apache2 /mods-enabled /

Доступные модули: ls /etc /apache2 /mods-available /

ответил CodeBrauer 4 Maypm15 2015, 14:33:10
17

Вы также можете использовать apachectl

apachectl -t -D DUMP_MODULES
ответил Eddie B 6 FebruaryEurope/MoscowbWed, 06 Feb 2013 11:04:37 +0400000000amWed, 06 Feb 2013 11:04:37 +040013 2013, 11:04:37
10

Я думаю, что здесь есть три вопроса. Я не уверен, о чем вы спрашиваете.

  • Какие модули у вас есть на диске. Какие модули вы можете использовать.

Это будет (обычно) в каталоге модулей вашего дистрибутива apache, обычно /etc /httpd /modules /

  • В каких модулях есть какой-либо конкретный экземпляр, настроенный для запуска.

Это можно проверить с помощью /usr /sbin /httpd -M, по крайней мере, для базовой системы apache. Если вы хотите проверить определенный файл конфигурации /usr /sbin /httpd -M -f /path /to /config /file

  • Что находится в запущенном apache

Чтобы получить много информации, вы можете увидеть ее с помощью http: //machinename /server-info / Это не настроено по умолчанию, вам нужно настроить его in. Его немного утечки информации, поэтому настройте его так, чтобы его видели только местные люди.

Если вы находитесь на машине и у вас есть доступ к текущему пользователю, вы также можете увидеть, что загружено, проверив процесс. Вы можете найти родительский процесс с помощью:

ps -ef | gawk '/httpd /& & & & $ 3 == 1 {print $ 2} '

Затем проверьте

cat /proc /PID_FROM_ABOVE /maps
ответил Rich Homolka 18 Mayam11 2011, 00:57:05
10

Если вы используете Redhat /CentOS, вместо apache2ctl используется httpd.

Это означает, что вам нужно использовать

httpd -M

Однако httpd почти никогда не находится в ожидаемом вами пути.

Я могу подтвердить на CentOS 5.8 фактический путь /usr /sbin /httpd.

/usr /sbin /httpd -M

Но если это не путь, вы можете его обнаружить. Вот как я смог это сделать.

Сначала я проверил демона, который используется для его управления.

less /init.d/httpd

Вокруг строки 40ish

# Путь к скрипту apachectl, двоичному файлу сервера и короткой форме для сообщений.
apachectl = /USR /SBIN /apachectl
HTTPD = $ {HTTPD- /USR /SBIN /HTTPD}
прог = HTTPD

Который рассказал мне, где именно его найти. Надеюсь, это поможет.

ответил geedew 11 MarpmTue, 11 Mar 2014 22:41:39 +04002014-03-11T22:41:39+04:0010 2014, 22:41:39
5

Список всех включенных модулей

a2query -m
ответил MetalGodwin 30 PM00000030000004531 2016, 15:23:45
3

В моем gentoo я могу выполнить apache2ctl modules и увидеть перечисленные модули.

ответил Grzegorz 22 Mayam14 2014, 02:35:14
2

Проверка из php-скрипта (для файла mod_xsend):

if (in_array (PHP_SAPI, массив ('apache', 'apache2filter', 'apache2handler'))
  & Amp; & Amp; in_array ('mod_xsendfile', apache_get_modules ()))
  \\сделай что-нибудь();

Проверка на PHP_SAPI заключается в исключении, когда php работает как CGI, а apache_get_modules () не работает в этом контексте. Кроме того, если это выполняется на php <5.0.0, только контекст apache2handler приведет к ожидаемому результату.

ответил noobish 11 PMpMon, 11 Apr 2016 20:36:03 +030036Monday 2016, 20:36:03
1

Я создал небольшой скрипт python, который поможет вам в этом. Посмотрите https://github.com/zioalex/unused_apache_modules

Это то, что вы можете ожидать от него:

curl http: //localhost /server-info> http_modules_test.txt
cat http_modules_test.txt | python find_unused_apache_mod.py

1
Имя модуля mod_python.c
Участие в фазе конфигурации: 4
Запрос участия в фазе: 11
Текущая конфигурация: 3

2
Имя модуля mod_version.c
Участие в фазе конфигурации: 0
Запрос участия в фазе: 0
Текущая конфигурация: 1

3
Имя модуля mod_proxy_connect.c
Участие в фазе конфигурации: 0
Запрос участия в фазе: 0
Текущая конфигурация: 0

Чтобы безопасно удалить:
 [ 'Mod_proxy_connect.c']
POPPED: mod_proxy_connect.c

Для KEEP: ['mod_python.c', 'mod_version.c', 'mod_proxy_connect.c']
ответил Alex 19 J000000Thursday18 2018, 19:20:26

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132