MySql と Apache と PHP/FI を使って
データベースシステムを構築して見ました
 構想としては SJISベースで作成することを目標に
 しました = Windowsベースでデータ作っているため

環境
SlackWare3.4 ( Linux-2.0.33 )
PJE-0.2bata

用意したもの
mysql-3.21.25-gamma.tar.gz
mysql-3.21.25-gamma-mb.patch.gz 民斗氏のWebページ「MySQL」より入手
php-2.0.1.tar.gz
kanji2.0.1.patch.gz
apache_1.2.6.tar.gz
作成の順番は mysql -> php -> apache となります

mysqlインストール
デフォルトをSJIS にするように設定
phpインストール
tar xvzf php-2.0.1.tar.gz
cd php-2.0.1
zcat ../kanji2.0.1.patch.gz | patch -p1

mule +68 src/kanjiconv.c で
int output_kanji_code=EUC; となっているものを
int output_kanji_code=SJIS; と変更

Mysql では インクルードファイルが
/usr/local/include/mysql/ にインストールされているが
PHP のインストーラでは ディレクトリの下に include を
付けてしまうので このままでは嬉しくない
mkdir /usr/local/mysql
ln -s /usr/local/include/mysql /usr/local/mysql/include
ln -s /usr/local/lib/mysql /usr/local/mysql/lib

とした もちろん /usr/local/include に直接ヘッダーを
コピーする事でも解決するのだが、バージョンアップの際に
忘れてしまったりするのでこのようにした



この後 ./installを実行

Install setting
cd src

一応Makfeildを見てみたら 39行目で
STATICLIBS = -lgdbm -lm /usr/local/include/mysql/client/libmysqlclient.a \
regex/libregex.a
となっていたので
STATICLIBS = -lgdbm -lm /usr/local/lib/mysql/libmysqlclient.a \
regex/libregex.a

としてライブラリパスを変更

make

set APACHE=/usr/local/etc/httpd/src
cp jp.regex/libregex.a $APACHE
cp jp.regex/jp.regex/regex.h $APACHE
cp jp.regex/regex.h $APACHE
cp mod_php.[c,h] $APACHE

Apache の設定
EXTRA_CFLAGS=-I. -DSERVER_SUBVERSION=\"PHP/FI-2.0.1JP5\"
EXTRA_LFLAGS=
EXTRA_LIBS=-L. -lphp -lgdbm -L/usr/local/mysql/lib -lmysqlclient -lregex -lm
EXTRA_INCLUDES=

#CC=
OPTIM=-O6
#RANLIB=
省略
Rule WANTHSREGEX=no

以下の行を追加
Module php_module mod_php.o


Configure
make

MysqlでPHP/FIのログを取る
mysqladmin create phpfi

echo "INSERT INTO user VALUES ('localhost','nobody','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');" | mysql mysql

mysqladmin reload

cd $PHP/script
sh mysqllog tateyama

 うぅ filename が何かいって起こる
 取り敢えず以下のように設定した
29,33
filename CHAR(64) NOT NULL,
host CHAR(64) NOT NULL,
email CHAR(64) NOT NULL,
lref CHAR(64) NOT NULL,
browser CHAR(64) NOT NULL,


strip httpd 一応ダイエット
/usr/local/etc/httpd/src/httpd

で 起動して見るが ステータスのログカウントがカウントアップしない(~_~;)
いろいろやって見ると
.phtml の オーナーが このログに使われるようです
だから
 sh mysqllog ユーザ名
で 作成しなければならないようです
取り敢えず 一番上位のものは root なので
作成する rootの場合は 2回 (y/n)を聞かれるが
何れも y を答えることで作成できます。

bash# sh mysqllog root
Username: root
Username: root, getting UID...
Done. root = 0 .

Want to continue (y/n)?y
Creating tables for user id 0...

これからの課題:
取り敢えずこのログを表示出来るようにする
スクリプトサンプルはPHP/FIのサンプルにあるので理解が進めば
順に使えるようになると思われる
続:SJIS に苦戦
せっかく MySQLもPHP/FIもShiftJISを使うべく設定したつもりなのですが、
MySqlのデータベースに入った時点でEUCコードになってしまってます。
ありゃぁ

いろいろやってみたのですが、表示に影響するphpKanjiOutputを加えてみたり
したのですがぜんぜんだめでしたぁ(;_;)


というわけでPHP/FIソースの見直しです
ちょっと苦戦しながらありました(^.^)
kanjiconv.c の中身で EUCに設定している部分が


参考文献:ソフトウェアデザイン '98年1月号 「PHP/FIサーバサイドスクリプト入門」 P138-141