जवाबों:
आप उबंटू पर हैं इसलिए कोशिश करें:
apache2ctl -M
apache2: bad user name ${APACHE_RUN_USER}
sudo apache2ctl -M | sort
apache2ctl
लेकिन वे न तो मेन्यू में सूचीबद्ध हैं और न ही अंदर apache2ctl --help
। ऐसा इसलिए है क्योंकि वे के माध्यम से सौंप दिया जाता है httpd
। वे केवल httpd प्रलेखन में सूचीबद्ध हैं ।
httpd -M
आपको बताएगा कि कौन से मॉड्यूल अंतर्निहित या साझा किए गए हैं।
httpd
निष्पादन योग्य के लिए पूर्ण पथ निर्दिष्ट करें ।
apache2
और नहीं httpd
, यही कारण है कि यह नहीं मिला है।
यदि आप दूरस्थ सर्वर पर कमांड नहीं चला सकते हैं, तो उपरोक्त उत्तरों में से कुछ भी काम नहीं करता है। यदि आपके पास केवल "उपयोगकर्ता" विशेषाधिकार हैं या कोई भी test.php
स्क्रिप्ट बनाने का प्रयास नहीं करता है :
<pre>
<?php
print_r(apache_get_modules());
?>
</pre>
हालांकि यह तभी काम करेगा जब PHP को इनस्टॉल किया जाएगा mod_php
।
हो सकता है कि यह करने के लिए कोई उपयोग के साथ साझा मेजबान पर कुछ लोगों के लिए मदद मिलेगी httpd
, apachectl
या प्रक्रियाओं:
सक्षम मॉड्यूल: ls /etc/apache2/mods-enabled/
उपलब्ध मॉड्यूल: ls /etc/apache2/mods-available/
आप अपाचेक्टल का भी उपयोग कर सकते हैं
apachectl -t -D DUMP_MODULES
मुझे लगता है कि वास्तव में यहां तीन प्रश्न हैं। मुझे यकीन नहीं है जो आप पूछ रहे हैं।
यह आमतौर पर आपके अपाचे वितरण के मॉड्यूल निर्देशिका में होगा, आमतौर पर / आदि / httpd / मॉड्यूल /
इसे कम से कम आधार प्रणाली अपाचे के लिए / usr / sbin / httpd -M के साथ चेक किया जा सकता है। यदि आप किसी विशिष्ट विन्यास फाइल / usr / sbin / httpd -M -f / path / to / config / file पर जांचना चाहते हैं
बहुत सारी जानकारी प्राप्त करने के लिए, आप इसे http: // machinename / server-info / के साथ देख सकते हैं / यह डिफ़ॉल्ट रूप से कॉन्फ़िगर नहीं किया गया है, आपको इसे कॉन्फ़िगर करना होगा । इसकी थोड़ी जानकारी लीक है, इसलिए इसे कॉन्फ़िगर करें। इसलिए केवल स्थानीय लोग ही इसे देख सकते हैं।
यदि आप मशीन पर हैं और आपके पास रनिंग उपयोगकर्ता होने की पहुँच है, तो आप यह भी देख सकते हैं कि प्रक्रिया की जाँच करके क्या लोड किया गया है। आप के साथ मूल प्रक्रिया पा सकते हैं:
ps -ef | gawk '/httpd/ && $3 == 1{print $2}'
फिर बाहर की जाँच करें
cat /proc/PID_FROM_ABOVE/maps
यदि आप Redhat / CentOS पर हैं, के httpd
स्थान पर उपयोग किया जाता है apache2ctl
।
इसका मतलब है आप का उपयोग करने की आवश्यकता है
httpd -M
हालाँकि, httpd
लगभग कभी भी आप जिस रास्ते की उम्मीद करते हैं।
मैं CentOS 5.8 पर पुष्टि कर सकता हूं कि वास्तविक रास्ता क्या है /usr/sbin/httpd
।
/usr/sbin/httpd -M
लेकिन अगर वह मार्ग नहीं है, तो आप उसे खोज सकते हैं। यहाँ है कि मैं ऐसा कैसे कर पा रहा था।
सबसे पहले, मैंने इसे नियंत्रित करने के लिए उपयोग किए जा रहे डेमन की जाँच की।
less /init.d/httpd
चारों ओर लाइन 40ish
# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/sbin/apachectl
httpd=${HTTPD-/usr/sbin/httpd}
prog=httpd
जिसने मुझे बताया कि वास्तव में इसे कहां खोजना है। उम्मीद है की यह मदद करेगा।
सभी सक्षम मॉड्यूल की सूची बनाएं
a2query -m
मेरे जेंटू पर, मैं apache2ctl modules
सूचीबद्ध मॉड्यूल को निष्पादित और देख सकता हूं ।
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
संदर्भ अपेक्षित परिणाम देगा।
मैंने आपकी मदद करने के लिए एक छोटा अजगर लिपि बनाई। कृपया 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']