ApacheAccessorを試してみた
なにやら変り種の拡張モジュールがリリースされたようです。
稼働中のApacheプロセスの設定内容を取得したりdumpする拡張モジュールだそうで。。。ということで、ざっと試してみました。
ApacheAccessor lets you retrieve Apache configuration (at runtime of current proccess) as PHP array or dump it as HTML table.
インストール
お決まりのpeclコマンドからインストール。途中で、apxsコマンドとaprconfig(apr-config)コマンドのパスを聞いてきますので、適宜入力します。以下は、CentOS 5.4付属のrpm版httpd-devel、apr-develの各パッケージをインストールしていた場合の例です。
$ sudo pecl install apacheaccessor-beta : Please provide the prefix of apxs2 binary [autodetect] : /usr/sbin/apxs Please provide the prefix of aprconfig binary [autodetect] : /usr/bin/apr-1-config : $ $ sudo sh -c "echo 'extension=apacheaccessor.so' >> /path/to/php.ini " $ sudo /sbin/service httpd stop $ sudo /sbin/service httpd start $
提供される関数
php_apache_accessor.cを見る限り、追加される関数は次の2つのようです。
- array apacheaccessor_get_conf()
- void apacheaccessor_dump_conf([boolean dump_file_data, [resource stream] ])
- dump_file_data : 『どのconfファイルの何行目』といった情報を表示するかどうか。デフォルトはfalse
- stream : ストリーム。デフォルトは『php://output』
コードサンプル
apacheaccessor_get_conf関数は結果を配列で返します。設定がネストしている場合は多次元になります。
<?php var_dump(apacheaccessor_get_conf());
これを実行すると次のようになります。
array 'PidFile' => array 0 => array 'filename' => string '/usr/local/apache2/conf/httpd.conf' (length=34) 'line_num' => int 11 'args' => string 'logs/httpd.pid' (length=14) 'Timeout' => array 0 => array 'filename' => string '/usr/local/apache2/conf/httpd.conf' (length=34) 'line_num' => int 13 'args' => string '300' (length=3) 'KeepAlive' => array 0 => array 'filename' => string '/usr/local/apache2/conf/httpd.conf' (length=34) 'line_num' => int 14 'args' => string 'On' (length=2) : 'Directory' => array 0 => array 'filename' => string '/usr/local/apache2/conf/httpd.conf' (length=34) 'line_num' => int 99 'subtree' => array 'Options' => array 0 => array 'filename' => string '/usr/local/apache2/conf/httpd.conf' (length=34) 'line_num' => int 100 'args' => string 'FollowSymLinks' (length=14) 'AllowOverride' => array 0 => array 'filename' => string '/usr/local/apache2/conf/httpd.conf' (length=34) 'line_num' => int 101 'args' => string 'None' (length=4) 'args' => string '/' (length=1) 1 => array 'filename' => string '/usr/local/apache2/conf/httpd.conf' (length=34) 'line_num' => int 103
一方のapacheaccessor_dump_conf関数ですが、引数なしの場合、次のような表組のHTMLを出力します(別途、style指定してます)。
また、ファイルに出力する場合、次のようなコードになります。
<?php $fp = fopen('/path/to/conf.html', 'w'); apacheaccessor_dump_conf(true, $fp);
あと、試した感じ、.htaccessの設定は含まれないようです。