2009年1月14日水曜日

PHP Fatal error: Call to undefined function sqlite_open() phpから SQLite2できない?

CentOS5.2、php5.1.6 (yum)の環境で sqlite_open() が出来ねー。
 

という状況で調べたら、phpからsqlite使うなら pdo_sqlite で sqlite3 を使いましょう、という情報が多い。
phpinfo() で確認したら、ご丁寧にコンフィグオプションで "without-sqlite" が指定されていた。
yumでインストールしたらそうなる模様、楽をするとしわ寄せがくるなあ。
 
 

sqlite2 を使う必要があるので少々困った。
sqlite.so だけ入れたら何とかなるだろうと思い探したら丁度よい情報が
 

[PHP]パッケージで入れたPHP 5に最新版sqlite拡張を入れる - GRANADA Hatena @ sotarok


複雑な事情はあれど、とりあえずPHP5をパッケージで入れた人むけ。
-snip-
で、実はこれで入れると、 without-sqlite されていて、php-pdo 入れれば sqlite3 系は使えるけど、sqlite2系の関数が使えない。

 
そうそう、そうなのよ。
解決法として phpize によるモジュールの個別インストール方法が紹介されていたので早速やってみる。
 

PHPの過去リリース から5.1.6のソースを落として ext/sqlite をphpize 。
.configure して make して
"/usr/local/src/php/php-5.1.6/ext/sqlite/modules/sqlite.so" の出来上がり。
 
 

きっちりphpから sqlite2 用の関数が使えるようになりました。
少々ならバージョン上がっても、同じ手順で大丈夫だろう。