web-dev-qa-db-fra.com

Comment vérifier quels modules Apache sont activés/installés?

Quel est le moyen le plus élégant de vérifier quels modules Apache sont activés?

369
udo

Vous êtes sur Ubuntu alors essayez:

Apache2ctl -M
448
Linker3000

httpd -M vous indiquera quels modules sont intégrés ou partagés.

115

Aucune des réponses ci-dessus ne fonctionne si vous ne pouvez pas exécuter de commandes sur un serveur distant. Si vous ne possédez que des privilèges «utilisateur» ou aucun, essayez de créer le script test.php:

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

Bien que cela ne fonctionne que si PHP est installé en tant que mod_php.

36
yatsa

Cela aidera peut-être certaines personnes sur des hôtes partagés sans accès à httpd, apachectl ou aux processus:

Modules activés: ls /etc/Apache2/mods-enabled/

Modules disponibles: ls /etc/Apache2/mods-available/

26
CodeBrauer

Vous pouvez également utiliser apachectl

apachectl -t -D DUMP_MODULES
18
Eddie B

Je pense qu'il y a en fait trois questions ici. Je ne suis pas sûr de ce que vous demandez.

  • Quels modules avez-vous sur le disque? Quels sont tous les modules que vous pouvez utiliser.

Ce serait (généralement) dans le répertoire modules de votre distribution Apache, généralement/etc/httpd/modules /

  • Quels modules est une instance spécifique configurée pour s'exécuter.

Ceci peut être vérifié avec/usr/sbin/httpd -M, au moins pour le système de base Apache. Si vous voulez vérifier un fichier de configuration spécifique/usr/sbin/httpd -M -f/chemin/vers/config/fichier

  • Qu'y a-t-il dans un Apache en cours d'exécution

Pour obtenir beaucoup d'informations, vous pouvez le voir avec http: // nom_ordinateur/info-serveur/ Ceci n'est pas configuré par défaut, vous devez le configurer il se trouve. C'est un peu d’une fuite d’informations, configurez-la pour que seules les personnes locales puissent la voir.

Si vous êtes sur la machine et que vous avez accès à l'utilisateur en cours d'exécution, vous pouvez également voir ce qui est chargé en vérifiant le processus. Vous pouvez trouver le processus parent avec:

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

Alors check out

cat /proc/PID_FROM_ABOVE/maps
13
Rich Homolka

Si vous êtes sur Redhat/CentOS, httpd est utilisé à la place de Apache2ctl.

Cela signifie que vous devez utiliser le

httpd -M

Cependant, httpd n'est presque jamais dans le chemin que vous attendez.

Je peux confirmer sur CentOS 5.8 que le chemin réel est /usr/sbin/httpd.

/usr/sbin/httpd -M

Mais si ce n'est pas le chemin, vous pouvez le découvrir. Voici comment j'ai pu le faire.

Tout d'abord, j'ai vérifié le démon utilisé pour le contrôler.

less /init.d/httpd

Autour de la ligne 40

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

Ce qui m'a dit exactement où le trouver. J'espère que cela t'aides.

11
geedew

Lister tous les modules activés

a2query -m
5
MetalGodwin

Sur mon gentoo, je peux exécuter Apache2ctl modules et voir les modules listés.

3
Grzegorz Golec

Vérification depuis un script php (pour mod_xsendfile):

if (in_array(PHP_SAPI, array('Apache','Apache2filter','Apache2handler'))
  && in_array('mod_xsendfile', Apache_get_modules()))
  \\doSomething();

La vérification de PHP_SAPI est à exclure lorsque php s'exécute en tant que CGI, car Apache_get_modules () ne fonctionne pas dans ce contexte. De plus, si cela est exécuté sur php <5.0.0, seul le contexte Apache2handler produira le résultat attendu.

2
noobish

J'ai créé un petit script python pour vous aider. Veuillez regarder https://github.com/zioalex/unused_Apache_modules

Voici ce que vous pouvez en attendre:

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

1
Module name mod_python.c
Configuration Phase Participation: 4
Request Phase Participation: 11
Current Configuration: 3

2
Module name mod_version.c
Configuration Phase Participation: 0
Request Phase Participation: 0
Current Configuration: 1

3
Module name mod_proxy_connect.c
Configuration Phase Participation: 0
Request Phase Participation: 0
Current Configuration: 0

To remove safely:
 ['mod_proxy_connect.c']
POPPED:  mod_proxy_connect.c

To KEEP:  ['mod_python.c', 'mod_version.c', 'mod_proxy_connect.c']
1
Alex