どの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
ここには3つの質問があると思います。どちらがあなたが求めているのかよくわかりません。
これは(通常)Apacheディストリビューションのmodulesディレクトリにあります。通常は/ etc/httpd/modules /です。
これは、少なくとも基本システムがApacheの場合は、/ usr/sbin/httpd -Mで確認できます。特定の設定ファイル/ usr/sbin/httpd -M -f/path/to/config/fileをチェックしたい場合
たくさんの情報を得るためには、 http:// machinename/server-info / で見ることができます。これはデフォルトでは設定されていません。 d = 設定する必要があります それはちょっとした情報漏えいなので、地元の人だけが見ることができるように設定します。
マシン上にいて、実行中のユーザーになるためのアクセス権がある場合は、プロセスをチェックすることによって何がロードされているかも確認できます。あなたは親プロセスを見つけることができます:
ps -ef | gawk '/httpd/ && $3 == 1{print $2}'
それからチェックアウト
cat /proc/PID_FROM_ABOVE/maps
Redhat/CentOSを使用している場合は、Apache2ctl
の代わりにhttpd
が使用されます。
これはあなたが使用する必要があることを意味します
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
私のgentooでは、Apache2ctl modules
を実行してモジュールの一覧を見ることができます。
Phpスクリプト内からチェックする(mod_xsendfile用):
if (in_array(PHP_SAPI, array('Apache','Apache2filter','Apache2handler'))
&& in_array('mod_xsendfile', Apache_get_modules()))
\\doSomething();
Apache_get_modules() はそのコンテキストでは動作しないため、PHP_SAPIのチェックはphpがCGIとして実行されている場合は除外することです。さらに、これがphp <5.0.0で実行された場合、Apache2handler
コンテキストのみが期待される結果を生成します。
私はそれを手助けするために小さなPythonスクリプトを作成しました。 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']