2011-05-17 19:55:14 +0000 2011-05-17 19:55:14 +0000
393
393

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

Quelle est la manière la plus élégante de vérifier quels modules apache sont activés ?

Réponses (11)

483
483
483
2011-05-17 20:01:43 +0000

Vous êtes sur Ubuntu alors essayez :

apache2ctl -M
120
120
120
2011-05-17 19:56:42 +0000

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

37
37
37
2012-04-11 09:10:50 +0000

Rien de ce qui précède ne fonctionne si vous ne pouvez pas exécuter de commandes sur un serveur distant. Si vous n'avez que des privilèges “utilisateur” ou aucun, essayez de créer le script test.php :

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

Bien qu'il ne fonctionne que si PHP est installé en tant que mod_php.

28
28
28
2015-05-04 11:33:10 +0000

Peut-être cela aidera-t-il certaines personnes sur des hôtes partagés n'ayant pas accès à httpd, apachectl ou aux processus :

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

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

18
18
18
2013-02-06 07:04:37 +0000

Vous pouvez également utiliser apachectl

apachectl -t -D DUMP_MODULES
14
14
14
2011-05-17 20:57:05 +0000

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

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

Cela se trouve (habituellement) dans le répertoire modules de votre distribution apache, habituellement /etc/httpd/modules/

  • Quels modules est toute instance spécifique configurée pour fonctionner.

Cela 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 /path/to/config/file

  • Ce qu'il y a dans un apache en cours d'exécution

Pour obtenir beaucoup d'informations, vous pouvez le voir avec http://machinename/server-info/ Ce n'est pas configuré par défaut, vous devez le configurer dans. Si vous êtes sur la machine et que vous avez l'accès pour être 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}'

Puis vérifiez

cat /proc/PID_FROM_ABOVE/maps
11
11
11
2014-03-11 18:41:39 +0000

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.

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

less /init.d/httpd

Autour de la ligne 40ish

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

Qui m'a dit exactement où le trouver. J'espère que cela vous aidera.

5
5
5
2016-08-30 12:23:45 +0000

Liste de tous les modules activés

a2query -m
3
3
3
2014-05-21 22:35:14 +0000

Sur ma gentoo, je peux exécuter apache2ctl modules et voir la liste des modules.

2
2
2
2016-04-11 17:36:03 +0000

Vérification à partir du 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 pour PHP_SAPI est à exclure lorsque php est exécuté en tant que CGI, car apache_get_modules() ne fonctionne pas dans ce contexte. De plus, si cette fonction est exécutée sur php < 5.0.0, seul le contexte apache2handler produira le résultat attendu.

1
1
1
2018-07-19 16:20:26 +0000

J'ai créé un petit script en python pour vous aider. Veuillez consulter 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']