mod_fcgid の socket / shm のファイル作成場所について。
fcgid_conf.c:
#define DEFAULT_SOCKET_PREFIX "logs/fcgidsock"
#define DEFAULT_SHM_PATH "logs/fcgid_shm"
で,
config->sockname_prefix =
ap_server_root_relative(p, DEFAULT_SOCKET_PREFIX);
config->shmname_path = ap_server_root_relative(p, DEFAULT_SHM_PATH);
なので,apacheもpkgsrcデフォルトのままだとすると,おそらく/usr/pkg/logs/以下になる。
で,標準でそんなディレクトリはないので,
[emerg] (2)No such file or directory: mod_fcgid: Can't create share memory for size %zu byte
といったエラーになる。
仕方がないのでhttpd.confなどで明示する。
<IfModule mod_fcgid.c>
AddHandler fcgid-script .fcgi
SocketPath /var/run/fcgidsock
SharememPath /var/run/fcgid_shm
</IfModule>
SocketPathで指定するのはディレクトリで,その下にwww権限(apacheの実行権限)でソケットが作られる。
SharememPathの方はファイル名そのもの。root権限で作ってくれるようだ。
検索すると/tmp以下に置いている例もあるが,別にした方が良いと思う。