konata.netのサーバをHPのMicroserverに置き換えようとして色々やっているのだけれど、
やはり、無問題というわけにはいかなくて、幾つかの障害があったりする。

今回はphpの構築。
ソースからmakeして入れるのだけれど、
cron起動しているスクリプトのエラーメールを受け取って事態が発覚。
パッと見、makeが通り、それっぽいライブラリがインストールされるのだけれど、
コマンドラインでphpを実行すると、Undefined symbol “sqlite3_open”みたいな感じで跳ねられる。

ちゃらっと調べて、以下のコマンドを叩くと、やっぱりオカシイ。

konata# php –ri pdo_sqlite

pdo_sqlite

PDO Driver for SQLite 3.x => enabled
/libexec/ld-elf.so.1: /opt/php-5.3.8/lib/php/extensions/no-debug-non-zts-20090626/pdo_sqlite.so: Undefined symbol “sqlite3_libversion”

nmで関数を見てやると、sqlite3_open初め諸々の関数の行き先が軒並み空っぽ。
そりゃ、エラー吐くわ。

もうちょっと調べて、ここに行き着く。
どうやら、configureのファイルを書き換えてやる必要があるらしい。
というか、1年以上前のバグに引っかかったのかなぁ……

で、再makeしたのだけれど、やっぱり中身がオカシイ pdo_sqlite.so が出来上がる。
書き換えた configure の指定は見ていないのか、そのルートに入ってないのか。
で、試行錯誤した結果、php-5.3.8/ext/pdo_sqlite 配下の Makefileに行き着く。
shared_objects_pdo_sqlite の指定に、sqlite3.lo の指定が足りない。

Makefile の shared_objects_pdo_sqlite の行を書き換える。

shared_objects_pdo_sqlite = pdo_sqlite.lo sqlite_driver.lo sqlite_statement.lo ../sqlite3/libsqlite/sqlite3.lo

後は、普通にmakeすると、なんとなくよさげなサイズの pdo_sqlite.so が出来上がる。
nmで中身を見て、とりあえず埋まってる事を確認。
make install で、pdo_sqlite.so だけ再インストール。

エラー吐いてたスクリプトを叩いてみてちゃんと動くことを確認。
いやぁ、めんどくさかった……

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です