httpd -tとconfigtestの違い
Apache文法テスト用のコマンド、”httpd -t”と”apachectl configtest”。
実は今まで全く同じものだと思っていたのだが、微妙に違うらしい、と発見した。。
結論から言うと、環境変数を読み込むか読み込まないかの違いということになる。
apachectl configtestはそのシェル内でhttpd -tを実行するのだが、加えてusr/local/apache2/bin/envvars
(Debian系だと/etc/ apache2/envvars)を読み込んで処理をする。
envvarsには起動・停止時のオプションなどApache用の環境変数を定義することが可能。
おそらく通常のApacheの利用状態ではhttpd -tとconfigtestの間で違いを感じること
はないと思われるが、自作のDSOを組み込むなど、独自の環境を構築していると結果が
変わってくることもある。
以下の3つはやってることは一緒で、結果も同様になるはず。
# /usr/local/apache2/bin/apachectl configtest
# service apache configtest
または
# source /usr/local/apache2/bin/envvars
(この後に続けて以下実行)
# /usr/local/apache2/bin/httpd -t
# service apache configtest はおそらくApache2.2以降で利用可能。
関連記事
Apacheの構文テスト