2011-05-17 19:55:14 +0000 2011-05-17 19:55:14 +0000
393
393

apacheモジュールが有効/インストールされているかどうかの確認方法

apacheモジュールが有効/インストールされているかどうかを確認する最もエレガントな方法はどれですか?

回答 (11)

483
483
483
2011-05-17 20:01:43 +0000

Ubuntuを使っているので、試してみてください:

apache2ctl -M
120
120
120
2011-05-17 19:56:42 +0000

httpd -Mは、どのモジュールが内蔵されているのか、共有されているのかを教えてくれます。

37
37
37
2012-04-11 09:10:50 +0000

あなたがリモートサーバー上でコマンドを実行できない場合は、上記の回答から何も動作しません。あなたが唯一の “ユーザー "権限を持っているか、または全くない場合は、test.phpスクリプトを作成してみてください:

<pre>
<?php
print_r(apache_get_modules());
?>
</pre>

それはPHPがmod_phpとしてインストールされている場合にのみ動作しますが。

28
28
28
2015-05-04 11:33:10 +0000

多分、これは、httpd, apachectl,

プロセスにアクセスできない共有ホスト上の何人かの人々のために役立つでしょう:

有効なモジュール: ls /etc/apache2/mods-enabled/

利用可能なモジュール: ls /etc/apache2/mods-available/

18
18
18
2013-02-06 07:04:37 +0000

また、 apachectl

apachectl -t -D DUMP_MODULES
``` を使用することもできます。
14
14
14
2011-05-17 20:57:05 +0000

実はここには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}'

で見つけることができます。

11
11
11
2014-03-11 18:41:39 +0000

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

どれがそれを見つけるために私に正確に教えてくれました。これが役立つことを望みなさい。

5
5
5
2016-08-30 12:23:45 +0000

すべての有効なモジュールをリストアップ

a2query -m
3
3
3
2014-05-21 22:35:14 +0000

私のgentooでは、apache2ctl modulesを実行するとモジュールの一覧が表示されます。

2
2
2
2016-04-11 17:36:03 +0000

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 のコンテキストだけが期待された結果を生成します。

1
1
1
2018-07-19 16:20:26 +0000

それを手助けするために、小さな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']

関連する質問

6
10
5
37
1