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


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


335
2018-05-17 19:55


Источник




Ответы:


Вы на Ubuntu, так что попробуйте:

apache2ctl -M

412
2018-05-17 20:01



apache2ctl -M прекрасно работает - udo
apache2 -M приводит к этой ошибке apache2: bad user name ${APACHE_RUN_USER} - udo
Достаточно справедливо - это связано с тем, что вы не выполняете команду в качестве пользователя времени выполнения apache (вероятно, www-data), определенного в конфигурации apache. Есть способ исправить это, но вы можете также придерживаться apache2ctl. - Linker3000
sudo apache2ctl -M | sort - mmdemirbas
Обратите внимание, что есть много полезных опций (флаги) для apache2ctl но они не перечислены ни на странице руководства, ни в apache2ctl --help, Это потому, что они передаются httpd, Они перечислены в Документация httpd только. - Lutz Prechelt


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


104
2018-05-17 19:56



hmm ... Я получаю «bash: httpd: command not found» при запуске httpd -M как root - udo
Затем укажите полный путь к httpd исполняемый файл. - Ignacio Vazquez-Abrams
@ IgnacioVazquez-Abrams: В Ubuntu (и других дистрибутивах на основе Debian) имя apache2и не httpd, поэтому он не найден. - Daniel Andersson
Apache - httpd на redhat. Попробуйте один из других ответов, если этот не работает для вас. - Jacks_Depression
CentOS также использует httpd вместо apache2 - pedromanoel


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

<pre>
<?php
print_r(apache_get_modules());
?>
</pre>

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


35
2018-04-11 09:10



Кроме того, вы захотите, чтобы это не было общедоступным. Возможно, вы захотите ограничить этот результат клиентом с помощью IP-адреса администратора. И вы захотите удалить этот скрипт, как только закончите с ним. Потому что глубокая защита; не делайте это легче, чем это должно быть. - Parthian Shot


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

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

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


18
2018-05-04 11:33



Вот полный список, apache2ctl фильтрует их - jgpATs2w


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

apachectl -t -D DUMP_MODULES

17
2018-02-06 07:04





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

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

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

  • Какие модули предназначены для запуска определенного экземпляра.

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

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

Чтобы получить много информации, вы можете увидеть ее с помощью Http: // имя_компьютера / сервер-инфо / По умолчанию это не настроено, вам придется конфигурировать это в. Его немного утечки информации, поэтому настройте его так, чтобы его могли видеть только местные люди.

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

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

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

cat /proc/PID_FROM_ABOVE/maps

10
2018-05-17 20:57



Полезная информация, но поскольку OP использует Ubuntu, имена файлов и местоположения различны - например: / usr / sbin / apache2 вместо httpd и ps -ef | gawk '/ apache2 / && $ 3 == 1 {print $ 2}' Местоположение модулей обрабатывается по-разному, с доступными модами и подпапками с поддержкой модов - Linker3000
Спасибо @ Linker3000 ... Вы правы, это для RedHat / Centos, я позволю вашему комментарию остановиться на том, как конвертировать в Ubuntu - Rich Homolka


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

Это означает, что вам необходимо использовать

httpd -M

Однако, httpd почти никогда не на пути, который вы ожидаете.

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

/usr/sbin/httpd -M

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

Во-первых, я проверил демона, используемого для его управления.

less /init.d/httpd

Вокруг линии 40ish

# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/sbin/apachectl
httpd=${HTTPD-/usr/sbin/httpd}
prog=httpd

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


10
2018-03-11 18:41





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

a2query -m

5
2017-08-30 12:23