FreeBSD7.x, Apache1.3.x, php5.2.xでソースからインストール(コンパイル)後、Apacheを起動すると
[root@bsd7 ]# /usr/local/etc/rc.d/apache.sh start
Starting Apache web server: Syntax error on line 205 of /usr/local/apache/conf/httpd.conf:
Cannot load /usr/local/apache/libexec/libphp5.so into server: /usr/local/apache/libexec/libphp5.so: Undefined symbol "ap_user_id"
/usr/local/apache/bin/apachectl start: httpd could not be started
となってApacheが起動しない...のの対処法。
# つか、いい加減Apache1.3.xは使わない方向で。
# 2.2.xなどの現在stableでリリースされてるものを使いましょう。
【 解決法 】
FreeBSD7.xではソースからコンパイルせず、portsを使いましょう。
MySQLもしくはPostgreSQLはportsでインストール済みとする。
んで、configureオプションは以下の通り。
[ apache1.3.42 ]
./configure --prefix=/usr/local/apache --enable-suexec --suexec-caller=nobody --suexec-userdir=homepage --suexec-docroot=/home --suexec-logfile=/usr/local/apache/logs/suexec_log --suexec-uidmin=1000 --suexec-gidmin=1000 --suexec-safepath="/bin:/usr/bin" --enable-module=log_agent --enable-module=log_referer --enable-module=so --enable-module=rewrite
[ php-5.2.14 ]
./configure --enable-mbstring --with-apxs=/usr/local/apache/bin/apxs --prefix=/usr/local/php --with-pgsql=/usr/local/pgsql/ --with-mysql=/usr/local/mysql/
portsからインストールするんだけど、SuExecとかも指定したいので/etc/make.confを設定し、/usr/ports/www/apache13/Makefileを書き換えます。
その上で、phpをインストールするとapacheも同時にインストールしてくれる。
[ /etc/make.conf ]
--------
# added by use.perl 2010-09-18 22:01:14
PERL_VERSION=5.10.1
#apache1.3
WITH_APACHE_SUEXEC = yes
APACHE_SUEXEC_DOCROOT = /home
APACHE_SUEXEC_CALLER = nobody
APACHE_SUEXEC_UIDMIN = 1000
APACHE_SUEXEC_GIDMIN = 1000
APACHE_SUEXEC_LOG = /var/log/httpd-suexec_log
APACHE_SUEXEC_USERDIR = homepage
DEFAULT_PATH = "/bin:/usr/bin"
--------
[ /usr/ports/www/apache13/Makefile ]
55 CONFIGURE_ARGS= --prefix=${PREFIX} \
56 --server-uid=www \
57 --server-gid=www \
58 --with-perl=${PERL} \
59 --with-layout=FreeBSD \
60 --suexec-docroot=${PREFIX}/www/data \
61 --without-confadjust \
62 --enable-module=most \
63 --enable-module=auth_db \
64 --enable-module=mmap_static \
65 --disable-module=auth_dbm \
66 --enable-shared=max \
67 --enable-module=ssl \
68 --enable-module=define
を修正する
CONFIGURE_ARGS= --prefix=${PREFIX} \
--server-uid=www \
--server-gid=www \
--with-perl=${PERL} \
--with-layout=FreeBSD \
--suexec-docroot=${PREFIX}/www/data \
--without-confadjust \
--enable-module=most \
--enable-module=auth_db \
--enable-module=mmap_static \
--disable-module=auth_dbm \
--enable-shared=max \
--enable-module=ssl \
--enable-module=define \
--enable-module=log_agent \
--enable-module=log_referer \
--enable-module=so \
--enable-module=rewrite \
${SUEXEC_CONF} \
${EXPAT_CONF}
以下操作ログ
[root@bsd7 ]# vi /etc/make.conf
[root@bsd7 ]# pushd /usr/ports/www/apache13
# Apacheが既にインストール済みの場合、PortsからPHPをインストールしようとするとエラーになるので、一旦アンインストールする。
# インストールしていない場合は/etc/make.confを設定後、ApacheのMakefileを書き換えてPHPをインストールすれば同時に Apacheもインストールされるので、あえて明示的にApacheをインストールせずPHPのみをインストールすれば良い。
[root@bsd7 ]# make deinstall
# ここで、上記の様にCONFIGURE_ARGSを指定する
[root@bsd7 ]# vi Makefile
[root@bsd7 ]# pushd /usr/ports/lang/php52
[root@bsd7 ]# make clean
# make configにてphpのconfigureオプションを指定
[root@bsd7 ]# make config
[root@bsd7 ]# make
[root@bsd7 ]# make test
[root@bsd7 ]# make install
[root@bsd7 ]# make clean
OSがFreeBSD7.xならports使っとけって話です。
■追記
OSがFreeBSD7.xの場合、
1. Apache1.3.xを使う場合、Apache, PHPともportsからインストールする。
2. どうしてもソースからインストールしたい場合は Apache2.2.xを使用する。
3. OS(FreeBSD)は安定版を使用する - 7.x, 5.xなどの奇数Verは極力避ける -
などなど。
気をつけましょう。





