どのapacheモジュールが有効になっているかを確認する最もエレガントな方法はどれですか?
402 udo 2011-05-17
Ubuntuを使っているので試してみてください
apache2ctl -M
492 Linker3000 2011-05-17
httpd -M
は、どのモジュールがビルトインかシェアードかを教えてくれます
122 Ignacio Vazquez-Abrams 2011-05-17
リモートサーバ上でコマンドを実行できない場合は、上記の回答の何も動作しません。user” 権限しかない場合や、全く権限がない場合は、test.php
スクリプトを作成してみてください
<pre>
<?php
print_r(apache_get_modules());
?>
</pre>
ただし、PHPがmod_php
としてインストールされている場合のみ動作します
40 yatsek 2012-04-11
これは、httpd
, apachectl
, プロセスにアクセスできない共有ホスト上の一部の人のために役立つかもしれません
有効なモジュール。ls /etc/apache2/mods-enabled/
利用可能なモジュール。ls /etc/apache2/mods-available/
31 CodeBrauer 2015-05-04
また、apachectlを使用することもできます
apachectl -t -D DUMP_MODULES
19 Eddie B 2013-02-06
実はここには3つの質問があると思います。どれを質問しているのかはわかりませんが
- ディスクに入っているモジュールは?使えるモジュールは何か
これは (通常は) apache ディストリビューションの modules ディレクトリ、通常は /etc/httpd/modules/ にあるでしょう
- どのようなモジュールが特定のインスタンスを実行するように設定されているか
これは/usr/sbin/httpd -Mで確認できます。特定の設定ファイルで確認したい場合 /usr/sbin/httpd -M -f /path/to/config/file
- 実行中のapacheには何が入っているのか
多くの情報を得るためには、http://machinename/server-info/ これはデフォルトでは設定されていないので、設定しなければなりません少し情報が漏れてしまうので、ローカルの人だけが見られるように設定してください
マシン上にいて、実行中のユーザーになることができるアクセス権を持っている場合は、プロセスを確認することで何がロードされているかを確認することもできます。で親プロセスを見つけることができます
ps -ef | gawk '/httpd/ && $3 == 1{print $2}'
続いて、チェックしてみましょう
cat /proc/PID_FROM_ABOVE/maps
14 Rich Homolka 2011-05-17
Redhat/CentOSの場合は、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
どこにあるか教えてくれましたこれが助けになることを願っています
11 geedew 2014-03-11
有効なモジュールをすべてリストアップします
a2query -m
6 MetalGodwin 2016-08-30
私のgentooでは、apache2ctl modules
を実行するとモジュールの一覧が表示されます
3 Grzegorz Golec 2014-05-21
php スクリプトの中からチェックしています (mod_xsendfile の場合)
if (in_array(PHP_SAPI, array('apache','apache2filter','apache2handler'))
&& in_array('mod_xsendfile', apache_get_modules()))
\\doSomething();
PHP_SAPI のチェックは、apache_get_modules()がそのコンテキストでは動作しないため、PHP が CGI として実行されている場合を除外することです。さらに、これを php < 5.0.0.0 で実行した場合、apache2handler
コンテキストのみが期待した結果を生成します
2 noobish 2016-04-11
そのための小さな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']
1 Alex 2018-07-19