Hangi apache modüllerinin etkin / yüklü olduğu nasıl kontrol edilir?


Yanıtlar:


464

Ubuntu'dasın, öyleyse dene:

apache2ctl -M

11
apache2ctl -M harika çalışıyor
udo

3
apache2 -M bu hatayı apache2: bad user name ${APACHE_RUN_USER}
udo

4
Yeterince adil - bu, apache konfigürasyonunda tanımlanan apache çalışma zamanı kullanıcısı (muhtemelen www-data) olarak komutu çalıştırmamanızdan kaynaklanmaktadır. Bunu düzeltmenin bir yolu var ama apache2ctl'ye bağlı kalabilirsiniz.
Linker3000

9
sudo apache2ctl -M | sort
mmdemirbas

4
Dikkat edin, birçok yararlı seçenek (bayrak) vardır, apache2ctlancak bunlar ne manpage ne de içinde listelenmiştir apache2ctl --help. Bunun sebebi, teslim edildikleridir httpd. Yalnızca httpd belgelerinde listelenmiştir .
Lutz Prechelt

117

httpd -M Hangi modüllerin yerleşik veya paylaşımlı olduğunu size söyleyecektir.


hmm ... httpd -M'yi root olarak başlatırken bir "bash: httpd: komut bulunamadı" alıyorum
udo

Böylece httpdçalıştırılabilir dosyanın tam yolunu belirtin .
Ignacio Vazquez-Abrams

9
@ IgnacioVazquez-Abrams: Ubuntu'da (ve diğer Debian tabanlı dağıtımlarda), ad apache2ve değil httpd, bu yüzden bulunamamıştır.
Daniel Andersson

3
Apache redhat üzerinde httpd. Bu sizin için işe yaramazsa, diğer cevaplardan birini deneyin.
Jacks_Depression 15

3
CentOS ayrıca apache2 yerine httpd kullanır
pedromanoel

37

Uzak sunucuda komutları çalıştıramazsanız yukarıdaki cevaplardan hiçbiri işe yaramaz. Yalnızca “kullanıcı” ayrıcalıklarına sahipseniz veya hiçbiri test.phpkomut dosyası oluşturmayı denemiyorsa :

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

Ancak PHP olarak kuruluysa çalışacaktır mod_php.


4
Ayrıca, bunun herkese açık görünmesini istemezsiniz. Bu sonucu müşterinin yöneticisi IP'siyle sınırlamak isteyebilirsiniz. Ve bu betiği bitirdikten hemen sonra silmek isteyeceksiniz. Çünkü derinlemesine savunma; olması gerekenden daha kolay hale getirme.
Parthian Shot,

28

Belki bu hiç erişimi olan paylaşılan ana bazı insanlar için yardımcı olacaktır httpd, apachectlya da süreçler:

Etkin modüller: ls /etc/apache2/mods-enabled/

Mevcut modüller: ls /etc/apache2/mods-available/


İşte tam listesi, apache2ctl onları filtre
jgpATs2w


13

Burada aslında üç soru olduğunu düşünüyorum. Hangisini istediğinden emin değilim.

  • Diskte hangi modüller var. Kullanabileceğiniz tüm modüller nelerdir.

Bu (genellikle) apache dağıtımınızın modüller dizininde olur, genellikle / etc / httpd / module /

  • Hangi modüller çalışacak şekilde yapılandırılmış herhangi bir özel örnektir.

Bu, en azından temel sistem apache'si için / usr / sbin / httpd -M ile kontrol edilebilir. Belirli bir yapılandırma dosyasını kontrol etmek istiyorsanız / usr / sbin / httpd -M -f / yol / to / config / dosya

  • Çalışan bir apache'de neler var

Çok fazla bilgi edinmek için http: // machinename / server-info / ile görebilirsiniz. Bu varsayılan olarak yapılandırılmamıştır , yapılandırmanız gerekir. bu yüzden sadece yerel insanlar görebilir.

Makinedeyseniz ve çalışan kullanıcı olmaya erişiminiz varsa, işlemi kontrol ederek nelerin yüklendiğini de görebilirsiniz. Ana süreci aşağıdakilerle bulabilirsiniz:

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

O zaman kontrol et

cat /proc/PID_FROM_ABOVE/maps

1
Faydalı bilgiler ancak OP Ubuntu kullandığı için dosya adları ve konumlar farklıdır - örneğin: httpd yerine / usr / sbin / apache2 ve ps -ef | gawk '/ apache2 / && $ 3 == 1 {print $ 2}' Modüllerin konumu farklı modlarda kullanılabilir ve mod etkinleştirilmiş alt klasörlerle kullanılır
Linker3000

Thanks @ Linker3000 ... Haklısın, bu RedHat / Centos içindir, yorumunuzun Ubuntu
Rich Homolka

11

Redhat / CentOS'taysanız, httpdbunun yerine kullanılır apache2ctl.

Bu, kullanmanız gereken anlamına gelir.

httpd -M

Ancak, httpdneredeyse asla beklediğiniz yolda değildir.

CentOS 5.8'de asıl yolun olduğunu onaylayabilirim /usr/sbin/httpd.

/usr/sbin/httpd -M

Fakat bu yol değilse, onu keşfedebilirsiniz. İşte bunu yapabildim.

İlk önce kontrol etmek için kullanılan cini kontrol ettim.

less /init.d/httpd

Çizgi 40ish etrafında

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

Bu bana tam olarak nerede bulacağımı söyledi. Bu yardımcı olur umarım.



3

Gentoo üzerinde apache2ctl moduleslistelenen modülleri çalıştırabilir ve görebilirim.


2

Php betiğinin içinden kontrol etme (mod_xsendfile için):

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

PHP_SAPI'nin kontrolü, php'nin CGI olarak çalıştığı zaman, apache_get_modules () bu bağlamda çalışmadığı için hariç tutulmalıdır . Ek olarak, eğer bu <5.0.0 php'de çalıştırılıyorsa, sadece apache2handleriçerik beklenen sonucu verecektir.


1

Size yardımcı olmak için küçük bir python betiği oluşturdum. Lütfen https://github.com/zioalex/unused_apache_modules adresini ziyaret edin.

Ondan bekleyebileceğiniz şey bu:

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']
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.