it-swarm-korea.com

어떤 아파치 모듈이 활성화 / 설치되어 있는지 확인하는 방법은 무엇입니까?

어떤 아파치 모듈이 활성화되어 있는지 확인하는 가장 우아한 방법은 무엇입니까?

373
udo

Ubuntu에 있으니 다음을 시도하십시오.

Apache2ctl -M
451
Linker3000

httpd -M는 내장 모듈이나 공유 모듈을 알려줍니다.

116

원격 서버에서 명령을 실행할 수없는 경우 위에 나온 답변 중 아무 것도 작동하지 않습니다. "사용자"권한 만 있거나 전혀없는 경우 test.php 스크립트를 작성하십시오.

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

PHP가 mod_php로 설치된 경우에만 작동합니다.

36
yatsa

아마도 이것은 httpd, apachectl 또는 프로세스에 대한 액세스 권한이없는 공유 호스트의 일부 사용자에게 도움이 될 것입니다.

사용 가능한 모듈 : ls /etc/Apache2/mods-enabled/

사용 가능한 모듈 : ls /etc/Apache2/mods-available/

26
CodeBrauer

또한 apachectl 을 사용할 수 있습니다.

apachectl -t -D DUMP_MODULES
18
Eddie B

실제로 여기에 세 가지 질문이 있다고 생각합니다. 네가 묻고있는 것이 확실하지 않다.

  • 디스크에 어떤 모듈이 있습니까? 사용할 수있는 모든 모듈은 무엇입니까?.

이것은 보통 아파치 배포판의 modules 디렉토리 (일반적으로/etc/httpd/modules /

  • 특정 인스턴스가 실행되도록 구성된 모듈은 무엇입니까?.

적어도 기본 시스템 Apache의 경우/usr/sbin/httpd -M을 사용하여 확인할 수 있습니다. 특정 설정 파일 인/usr/sbin/httpd -M -f/path/to/config/file을 확인하고 싶다면

  • 실행중인 Apache에 무엇이 있습니까?

많은 정보를 얻으려면 http : // machinename/server-info/ 로 볼 수 있습니다. 기본적으로 구성되어 있지 않으므로 약간의 정보 유출이 있으므로 현지인 만 볼 수 있도록 구성하십시오 .

시스템을 사용하고 있고 실행중인 사용자가 될 수있는 액세스 권한이있는 경우 프로세스를 확인하여로드 된 내용을 볼 수도 있습니다. 다음을 사용하여 상위 프로세스를 찾을 수 있습니다.

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

그런 다음 체크 아웃하십시오.

cat /proc/PID_FROM_ABOVE/maps
13
Rich Homolka

Redhat/CentOS를 사용하고 있다면 Apache2ctl 대신 httpd이 사용됩니다.

즉,

httpd -M

그러나 httpd은 예상 한 경로에 거의 도달하지 않습니다.

CentOS 5.8에서 확인할 수있는 실제 경로는 /usr/sbin/httpd입니다.

/usr/sbin/httpd -M

그러나 그것이 경로가 아니면 발견 할 수 있습니다. 여기 제가 어떻게 그렇게 할 수 있었는지 알려드립니다.

먼저, 제어하는 ​​데 사용되는 데몬을 검사했습니다.

less /init.d/httpd

40inch 전후

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

어느 곳에서 찾아야할지 정확하게 알려주었습니다. 희망이 도움이됩니다.

11
geedew

모든 활성화 된 모듈 나열

a2query -m
5
MetalGodwin

내 gentoo에서 Apache2ctl modules를 실행하고 나열된 모듈을 볼 수 있습니다.

3
Grzegorz Golec

PHP 스크립트에서 확인 (mod_xsendfile) :

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

PHP_SAPI 검사는 php가 CGI로 실행될 때 Apache_get_modules () 가 해당 컨텍스트에서 작동하지 않을 때 제외합니다. 또한 PHP 5.0.0에서이 스크립트를 실행하면 Apache2handler 컨텍스트 만 예상되는 결과를 생성합니다.

2
noobish

작은 파이썬 스크립트를 만들었습니다. https://github.com/zioalex/unused_Apache_modules 을 살펴보십시오.

이것이 당신이 기대할 수있는 것입니다 :

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