활성화 / 설치된 아파치 모듈을 확인하는 방법은 무엇입니까?


답변:


464

우분투에 있으므로 다음을 시도하십시오.

apache2ctl -M

11
apache2ctl -M 은 훌륭하게 작동합니다
udo

3
apache2-M 은이 오류를 발생시킵니다apache2: bad user name ${APACHE_RUN_USER}
udo

4
충분합니다-아파치 구성에 정의 된 아파치 런타임 사용자 (아마도 www-data)로 명령을 실행하지 않기 때문입니다. 이것을 고치는 방법이 있지만 apache2ctl을 고수 할 수도 있습니다.
Linker3000

9
sudo apache2ctl -M | sort
mmdemirbas

4
유용한 옵션 (플래그)이 많이 apache2ctl있지만 맨 페이지 나에 나열되어 있지 않습니다 apache2ctl --help. 그 (것)들을 통해 전달되기 때문 httpd입니다. httpd 문서 에만 나열되어 있습니다.
Lutz Prechelt

117

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


흠 ... 루트로 httpd -M을 시작할 때 "bash : httpd : command not found"가 나타납니다
udo

그런 다음 httpd실행 파일 의 전체 경로를 지정하십시오 .
이그나시오 바스케스-아 브람스

9
@ IgnacioVazquez-Abrams : Ubuntu (및 기타 데비안 기반 배포판)에서 이름은 apache2이고 그렇지 httpd않기 때문에 찾을 수 없습니다.
Daniel Andersson

3
Apache는 redhat에 httpd입니다. 이 방법으로 문제가 해결되지 않으면 다른 답변 중 하나를 시도하십시오.
Jacks_Depression

3
CentOS는 또한 apache2 대신 httpd를 사용합니다
pedromanoel

37

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

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

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


4
또한 공개적으로 표시하지 않기를 원할 것입니다. 그 결과를 관리자의 IP를 가진 클라이언트로 제한 할 수 있습니다. 그리고 스크립트가 완료 되 자마자 해당 스크립트를 제거하고 싶을 것입니다. 심층 방어이기 때문에; 필요 이상으로 쉽게 만들지 마십시오.
Parthian Shot

28

어쩌면 이것은 httpd, apachectl또는 프로세스에 액세스 할 수없는 공유 호스트의 일부 사람들에게 도움이 될 것입니다 .

활성화 된 모듈 : ls /etc/apache2/mods-enabled/

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


전체 목록은 다음과 같습니다. apache2ctl 필터
jgpATs2w


13

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

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

이것은 (보통) 아파치 배포판의 modules 디렉토리에 있습니다. 보통 / etc / httpd / modules /

  • 특정 인스턴스가 실행되도록 구성된 모듈

최소한 기본 시스템 아파치의 경우 / usr / sbin / httpd -M을 사용하여 확인할 수 있습니다. 특정 구성 파일 / usr / sbin / httpd -M -f / path / to / config / file을 확인하려는 경우

  • 실행중인 아파치에 무엇이 있습니까?

많은 정보를 얻으려면, 당신이 그것을 볼 수 에 http : // 컴퓨터 이름 / 서버 정보 / 이 기본적으로 구성되어 있지 않은, 당신은해야 할 것 구성 . 그것을 정보 누출의 그것 조금, 그래서 그것을 구성 현지 사람들 만 볼 수 있습니다

컴퓨터를 사용 중이고 실행중인 사용자가 될 수있는 경우 프로세스를 확인하여로드 된 내용을 볼 수도 있습니다. 다음과 같은 방법으로 상위 프로세스를 찾을 수 있습니다.

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

그런 다음 확인

cat /proc/PID_FROM_ABOVE/maps

1
유용한 정보이지만 OP가 Ubuntu를 사용하고 있기 때문에 파일 이름과 위치가 다릅니다 (예 : httpd 대신 / usr / sbin / apache2 및 ps -ef | 둔한 가능한 개조 및 개조 지원 하위 폴더로, 모듈의 위치가 다르게 처리한다 '/ 아파치 / && $ 3 == 1 {$ 2 인쇄}'
Linker3000

Linker3000 @ 감사합니다 ... 당신 말이 맞아,이 나는 당신의 의견은 우분투로 변환하는 방법에 서서 드리겠습니다, 레드햇 / CentOS의입니다
리치 Homolka

11

Redhat / CentOS httpd를 사용하는 경우 대신 에이 ( 가) 사용됩니다 apache2ctl.

즉,

httpd -M

그러나, httpd당신이 기대하는 길에는 거의 없습니다.

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

/usr/sbin/httpd -M

그러나 이것이 경로가 아니면 발견 할 수 있습니다. 내가 할 수 있었던 방법은 다음과 같습니다.

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

less /init.d/httpd

40 라인 전후

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

어디에서 찾을 수 있는지 정확히 말해주었습니다. 도움이 되었기를 바랍니다.




2

PHP 스크립트 내에서 확인 (mod_xsendfile의 경우) :

if (in_array(PHP_SAPI, array('apache','apache2filter','apache2handler'))
  && in_array('mod_xsendfile', apache_get_modules()))
  \\doSomething();

apache_get_modules () 가 해당 컨텍스트에서 작동하지 않기 때문에 PHP가 CGI로 실행될 때 PHP_SAPI를 검사 하지 않습니다. 또한 이것이 php <5.0.0에서 실행되면 apache2handler컨텍스트 만 예상 결과를 생성합니다.


1

나는 당신을 돕기 위해 작은 파이썬 스크립트를 만들었습니다. 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']
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.