উত্তর:
আপনি উবুন্টুতে আছেন তাই চেষ্টা করুন:
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>
যদিও এটি কেবলমাত্র পিএইচপি হিসাবে ইনস্টল থাকলে কাজ করবে 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 / দিয়ে দেখতে পারবেন এটি ডিফল্টরূপে কনফিগার করা হয়নি, আপনাকে এটি কনফিগার করতে হবে Its এটি কিছুটা তথ্য ফাঁস, তাই এটি কনফিগার করুন তাই কেবল স্থানীয় লোকেরা এটি দেখতে পারে।
আপনি যদি মেশিনে থাকেন এবং আপনার চলমান ব্যবহারকারী হওয়ার অ্যাক্সেস থাকে তবে প্রক্রিয়াটি পরীক্ষা করে আপনি কী লোড হয়েছেন তাও দেখতে পাবেন। আপনি এর সাথে পিতামাতার প্রক্রিয়াটি খুঁজে পেতে পারেন:
ps -ef | gawk '/httpd/ && $3 == 1{print $2}'
তারপরে চেক আউট করুন
cat /proc/PID_FROM_ABOVE/maps
আপনি যদি রেডহাট / সেন্টোস এ থাকেন তবে এটির 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
এটি আমাকে কোথায় খুঁজে পেতে হবে ঠিক তা বলেছিল। আশাকরি এটা সাহায্য করবে.
সমস্ত সক্ষম মডিউল তালিকাভুক্ত
a2query -m
আমার ধীরে ধীরে, আমি apache2ctl modules
তালিকাবদ্ধ মডিউলগুলি সম্পাদন করতে এবং দেখতে পারি ।
পিএইচপি স্ক্রিপ্টের মধ্যে থেকে পরীক্ষা করা হচ্ছে (Mod_xsendfile এর জন্য):
if (in_array(PHP_SAPI, array('apache','apache2filter','apache2handler'))
&& in_array('mod_xsendfile', apache_get_modules()))
\\doSomething();
পিএইচপি_এসএপিআইয়ের চেকটি বাদ দেওয়া হয় যখন পিএইচপি সিজিআই হিসাবে চলতে থাকে, কারণ অ্যাপাচি_জেট_মডিউলগুলি () সেই প্রসঙ্গে কাজ করে না। অতিরিক্ত হিসাবে, এটি পিএইচপি <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']