Respostas:
Você está no Ubuntu, então tente:
apache2ctl -M
apache2: bad user name ${APACHE_RUN_USER}
sudo apache2ctl -M | sort
apache2ctl
mas elas não estão listadas na página de manual nem em apache2ctl --help
. Isso é porque eles são entregues a httpd
. Eles estão listados apenas na documentação httpd .
httpd -M
dirá quais módulos são integrados ou compartilhados.
httpd
executável.
apache2
e não httpd
, e é por isso que não foi encontrado.
Nada das respostas acima funciona se você não puder executar comandos no servidor remoto. Se você tiver apenas privilégios de "usuário" ou nenhum, tente criar um test.php
script:
<pre>
<?php
print_r(apache_get_modules());
?>
</pre>
Embora funcione apenas se o PHP estiver instalado como mod_php
.
Talvez isto ajude para algumas pessoas em hosts compartilhados sem acesso a httpd
, apachectl
ou processos:
Módulos ativados: ls /etc/apache2/mods-enabled/
Módulos disponíveis: ls /etc/apache2/mods-available/
Eu acho que há realmente três perguntas aqui. Não tenho certeza do que você está perguntando.
Isso seria (normalmente) no diretório modules da sua distribuição apache, geralmente / etc / httpd / modules /
Isso pode ser verificado com / usr / sbin / httpd -M, pelo menos para o apache do sistema básico. Se você deseja verificar um arquivo de configuração específico / usr / sbin / httpd -M -f / path / to / config / file
Para obter muitas informações, você pode vê-las com http: // nome da máquina / informações do servidor / Isso não está configurado por padrão, você precisa configurá- las. É um vazamento de informações, então configure-o para que apenas as pessoas locais possam vê-lo.
Se você estiver na máquina e tiver acesso para ser o usuário em execução, também poderá ver o que está carregado, verificando o processo. Você pode encontrar o processo pai com:
ps -ef | gawk '/httpd/ && $3 == 1{print $2}'
Então confira
cat /proc/PID_FROM_ABOVE/maps
Se você estiver no Redhat / CentOS, httpd
é usado no lugar de apache2ctl
.
Isso significa que você precisa usar o
httpd -M
No entanto, httpd
quase nunca está no caminho que você espera.
Posso confirmar no CentOS 5.8 o caminho real /usr/sbin/httpd
.
/usr/sbin/httpd -M
Mas se esse não for o caminho, você poderá descobri-lo. Aqui está como eu pude fazê-lo.
Primeiro, verifiquei o daemon sendo usado para controlá-lo.
less /init.d/httpd
Em torno da linha 40ish
# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/sbin/apachectl
httpd=${HTTPD-/usr/sbin/httpd}
prog=httpd
O que me disse exatamente onde encontrá-lo. Espero que isto ajude.
Listar todos os módulos ativados
a2query -m
No meu gentoo, eu posso executar apache2ctl modules
e ver os módulos listados.
Verificando dentro do script php (para mod_xsendfile):
if (in_array(PHP_SAPI, array('apache','apache2filter','apache2handler'))
&& in_array('mod_xsendfile', apache_get_modules()))
\\doSomething();
A verificação do PHP_SAPI é para excluir quando o php estiver sendo executado como CGI, pois apache_get_modules () não funciona nesse contexto. Além disso, se isso for executado no php <5.0.0, apenas o apache2handler
contexto produzirá o resultado esperado.
Eu criei um pequeno script python para ajudá-lo. Consulte https://github.com/zioalex/unused_apache_modules
É isso que você pode esperar:
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']