Answers:
ඔබ උබුන්ටු වල සිටින නිසා උත්සාහ කරන්න:
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/
මම හිතන්නේ ඇත්ත වශයෙන්ම මෙහි ප්රශ්න තුනක් තිබේ. ඔබ ඉල්ලන්නේ කුමක්දැයි මට විශ්වාස නැත.
මෙය (සාමාන්යයෙන්) ඔබගේ අපාචේ බෙදාහැරීමේ මොඩියුල නාමාවලියෙහි වේ, සාමාන්යයෙන් / etc / httpd / modules /
මෙය අවම වශයෙන් මූලික පද්ධති අපාචේ සඳහා / 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']