哪種方法可以檢查哪些apache模塊已啟用?
哪種方法可以檢查哪些apache模塊已啟用?
你在Ubuntu上試試:
apache2ctl -M
httpd -M
會告訴你哪些模塊是內置的或共享的。
如果您無法在遠程服務器上運行命令,則上述答案中的任何內容均無效。如果您只有“用戶”權限或根本沒有權限,請嘗試創建 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
apachectl -t -D DUMP_MODULES
我認為這裡實際上有三個問題。我不確定你在問什麼。
這將(通常)在您的apache發行版的modules目錄中,通常是/ etc / httpd / modules /
這可以用/ usr / sbin / httpd -M檢查,至少對於基本系統apache。如果要檢查特定的配置文件/ usr / sbin / httpd -M -f / path / to / config / file
要獲得大量信息,您可以看到它 HTTP://機器/服務器信息/ 默認情況下不配置,您必須這樣做 配置 它有點信息洩漏,所以配置它只有當地人才能看到它。
如果您在計算機上並且可以訪問正在運行的用戶,則還可以通過檢查進程來查看加載的內容。您可以使用以下命令查找父進程:
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
在我的gentoo上,我可以執行 apache2ctl modules
並查看列出的模塊。
從php腳本中檢查(對於mod_xsendfile):
if (in_array(PHP_SAPI, array('apache','apache2filter','apache2handler'))
&& in_array('mod_xsendfile', apache_get_modules()))
\\doSomething();
當php作為CGI運行時,PHP_SAPI的檢查是排除的 apache_get_modules() 在這種情況下不起作用。另外,如果這是在php <5.0.0上運行,那麼只有 apache2handler
上下文將產生預期的結果。