古いバージョンのPHP(4.0.6)とMySQL5(5.0.51a)のビルド

仕事でまた、またPHPを使うことになりそうだ。
既存のサーバー環境をしらべてみると、PHP4.0.6で稼動している。
(だいぶ古いな)
ともあれ、自分の開発環境にも同じバージョンのものをそろえてみようと思い
しぶしぶビルドしてみた。
すると
mysql_create_db と mysql_drop_db の両関数が存在しないエラーがでた。
どうやら、この関数は、通常のMySQLのビルドではlibmysql に組み込まれないらしい。

対処方法として下記リンクのような、両関数を呼んでいる関数を消してしまう
方法があるが、ん〜 これはいかがなものかと思って、この両関数も組み込まれるように
ソースをあたってみた。

http://www.databasebank.com/programmers/frm_detail.php?v_id=1393

結論からすると、-DUSE_OLD_FUNCTIONS オプションをつけて
makeしてやるとよいらしい。

make CFLAGS+=-DUSE_OLD_FUNCTIONS

ただ、Linux環境だと上記の指定をすると、なぜだか -DUNIV_LINUX オプションが消されてしまい、shmid_ds 構造体が定義されている sys/shm.h(bits/shm.h) がインクルードされなくなってしまい、エラーが
でるので

make CFLAGS+="-DUSE_OLD_FUNCTIONS -DUNIV_LINUX"

としてやらないといけない。

まあ、これでPHPMySQL ともにソースの修正をせずに問題を解決できる。