Você está no Ubuntu, então tente:
apache2ctl -M
Qual é a maneira mais elegante de verificar quais módulos do Apache estão habilitados?
httpd -M
dirá quais módulos são integrados ou compartilhados.
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 test.php
script:
<pre>
<?php
print_r(apache_get_modules());
?>
</pre>
Embora funcione somente se o PHP estiver instalado como mod_php
.
Talvez isso ajude 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/
Você também pode usar o apachectl
apachectl -t -D DUMP_MODULES
Eu acho que existem três perguntas aqui. Não tenho certeza do que você está perguntando.
Isso seria (geralmente) no diretório modules da sua distribuição do apache, geralmente / etc / httpd / modules /
Isto pode ser verificado com / usr / sbin / httpd -M, pelo menos para o apache do sistema base. Se você quiser verificar um arquivo de configuração específico / usr / sbin / httpd -M -f / caminho / para / config / file
Para obter muitas informações, você pode vê-las com o link Isso não está configurado por padrão, você teria que configurar ele dentro. É um pouco de um vazamento de informações, configure-o de modo que apenas 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ê está 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 esperado.
Eu posso confirmar no CentOS 5.8 que o caminho real é /usr/sbin/httpd
.
/usr/sbin/httpd -M
Mas se esse não é o caminho, você pode descobrir. Aqui está como eu pude fazê-lo.
Primeiro, verifiquei o daemon sendo usado para controlá-lo.
less /init.d/httpd
Na 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 isso ajude.
Listar todos os módulos ativados
a2query -m
No meu gentoo, posso executar apache2ctl modules
e ver os módulos listados.
Verificando a partir 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 para PHP_SAPI é para excluir quando o PHP está sendo executado como CGI, como apache_get_modules () não funciona nesse contexto. Além disso, se isso for executado no php < 5.0.0, somente o contexto apache2handler
produzirá o resultado esperado.
Eu criei um pequeno script python para ajudá-lo. Por favor, dê uma olhada no link
Isso é o 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']