Réponses:
Vous êtes sur Ubuntu alors essayez:
apache2ctl -M
apache2: bad user name ${APACHE_RUN_USER}
sudo apache2ctl -M | sort
apache2ctl
mais elles ne sont répertoriées ni dans la page de manuel ni dans apache2ctl --help
. C'est parce qu'ils sont remis à httpd
. Ils sont listés dans la documentation httpd uniquement.
httpd -M
vous dira quels modules sont intégrés ou partagés.
httpd
exécutable.
apache2
et non httpd
, raison pour laquelle il n'est pas trouvé.
Aucune des réponses ci-dessus 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 un test.php
script:
<pre>
<?php
print_r(apache_get_modules());
?>
</pre>
Bien que cela ne fonctionne que si PHP est installé en tant que mod_php
.
Peut - être que cela vous aidera pour certaines personnes sur des hôtes partagés sans accès à httpd
, apachectl
ou processus:
Modules activés: ls /etc/apache2/mods-enabled/
Modules disponibles: ls /etc/apache2/mods-available/
Je pense qu'il y a en fait trois questions ici. Je ne suis pas sûr de ce que vous demandez.
Ce serait (généralement) dans le répertoire modules de votre distribution Apache, généralement / etc / httpd / modules /
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 / chemin / vers / config / fichier
Pour obtenir beaucoup d'informations, vous pouvez le voir avec http: // nom_ordinateur / info-serveur / Ce n'est pas configuré par défaut, vous devez le configurer . C'est un peu une fuite d'informations, alors configurez-le de sorte que seules les populations locales peuvent le 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
Si vous êtes sur Redhat / CentOS, httpd
est utilisé à la place de apache2ctl
.
Cela signifie que vous devez utiliser le
httpd -M
Cependant, ce httpd
n’est presque jamais dans le chemin que vous attendez.
Je peux confirmer sur CentOS 5.8 le chemin réel /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 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.
Lister tous les modules activés
a2query -m
Sur mon gentoo, je peux exécuter apache2ctl modules
et voir les modules listés.
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 apache2handler
contexte produira le résultat attendu.
J'ai créé un petit script 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']