Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

apxsを使ってモジュールを追加する

すでに稼働しているApache(ソースからbuild)にモジュールを追加したい場合が(まれに)ありますが、「configureオプションを編集して再度ソースからbuild」とか面倒でやってられません。そんな時はApacheをインストールした際にbinディレクトリにインストールされるapxsコマンドを使いましょう。

「mod_xxxx」というモジュールをapxsを使って追加インストールする基本的な手順は次のようになります。

$ cd /path/to/httpd-source/modules/modulename/
$ /path/to/apxs -c mod_xxxx.c
$ sudo /path/to/apxs -i mod_xxxx.la

-cオプションはコンパイル、-iはインストールを意味します。オプションをまとめることもできます。
で、モジュールにも依るんだと思いますが、-iオプションでインストールしたときに

apxs:Error: Sorry, cannot determine bootstrap symbol name.
apxs:Error: Please specify one with option `-n'.

と出た場合、-nオプションを使ってモジュール名(mod_xxxx)を明示的に指定します。このオプションは、apxsがモジュール名を自動的に検出しようとして失敗した場合のfallbackを指定するものです。

$ sudo /path/to/apxs -i -n xxxx mod_xxxx.la

たとえば、mod_davとmod_dav_fsを後付でインストールする場合は次のような感じ。複数のcファイルがある場合、先頭にmod_xxxx.cを指定する必要があるようです。

$ cd /path/to/httpd-source/modules/dav/main/
$ sudo /path/to/apxs -ci mod_dav.c liveprop.c props.c  providers.c  std_liveprop.c  util.c  util_lock.c           
$ cd ../fs/
$ sudo /path/to/apxs -ci mod_dav_fs.c dbm.c lock.c repos.c
$ 

ちなみに、-aオプションを付けると、httpd.confにLoadModuleディレクティブを追加してくれます。-Aオプションの場合、先頭にハッシュ「#」付きでLoadModuleディレクティブが追加されます。