Ubuntuを使っているので、試してみてください:
apache2ctl -M
httpd -M
は、どのモジュールが内蔵されているのか、共有されているのかを教えてくれます。
多分、これは、httpd
, apachectl
,
プロセスにアクセスできない共有ホスト上の何人かの人々のために役立つでしょう:
有効なモジュール: ls /etc/apache2/mods-enabled/
利用可能なモジュール: ls /etc/apache2/mods-available/
実はここには3つの質問があると思います。どれを質問しているのかわかりませんが、
これは (通常は) apache ディストリビューションの modules ディレクトリ、通常は /etc/httpd/modules/
どのモジュールを実行するように特定のインスタンスが設定されているか。特定の設定ファイルをチェックしたい場合は /usr/sbin/httpd -M -f /path/to/config/file
実行中のapacheに何があるのか
多くの情報を得るには、http://machinename/server-info/ デフォルトでは設定されていないので、configure で確認する必要があります。ちょっとした情報漏洩なので、ローカルの人だけが見られるように設定してください。
マシン上にいて、実行中のユーザーとしてアクセスできる場合は、プロセスをチェックして何がロードされているかを見ることもできます。親プロセスは
ps -ef | gawk '/httpd/ && $3 == 1{print $2}'
で見つけることができます。
Redhat/CentOSの場合、httpd
の代わりに
httpd -M
/usr/sbin/httpd -M
ということになりますが、apache2ctl
が思った通りのパスに入っていることはほとんどありません。
CentOS 5.8で確認できるのは、実際のパスがhttpd
になっているということです。ここに私ができた方法があります。
最初に、私はそれを制御するために使用されているデーモンをチェックしました。
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 スクリプト内からのチェック (for mod_xsendfile):
if (in_array(PHP_SAPI, array('apache','apache2filter','apache2handler'))
&& in_array('mod_xsendfile', apache_get_modules()))
\doSomething();
PHP_SAPI のチェックは、PHP が CGI として実行されている場合に除外することです。さらに、もしこれが php < 5.0.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']