トップ «前の日記(2006-02-13) 最新 次の日記(2006-02-15)» 編集

2006-02-14 [長年日記]

_ PHP 4.3 以降で SQLite

[2006-08-01 追記]以下の方法で入るのは SQLite 2 です。3 も 2 も両方使えるのは 5.1 以降 + PDO 環境だけのようです。

PHP で SQLite って言うと、5 で標準搭載という話題ばかりになってしまってるわけですが、実際には PECL から extension をインストールしちゃえば 4.3 以降で使えます。非Win環境では

pear install pecl/SQLite

(要ビルド環境)して extension を load するように設定を書き換えれば ok. Windows では http://pecl.php.net/package/SQLite からダウンロードしてくること。

なんだ、楽勝じゃんと思ったら OS X(Panther)の CLI版では extension の load がうまく動かず、リリースされたばかりの MDB2_Driver_sqlite がインストールできません。仕方ないので

pear install --ignore-errors MDB2_Driver_sqlite

として強行突破。

ちなみにエラーは具体的にはまず Unable to load dynamic library で sqlite.so が load できずに、pear のチェックで弾かれて MDB2_Driver_sqlite がインストールできないと言われる。これは extension_dir が適切にセットされていないから。

しかし extension_dir をセットすると今度は

dyld: /usr/bin/php Undefined symbols:
_OnUpdateInt
_core_globals
_display_link_numbers
_executor_globals

と言われて pear が起動しないという有様。

ちなみに mod_php の方では問題なく動くので

sudo cp /etc/php.ini /etc/php-cli.ini

として CLI 版用の ini ファイルを作り、そこでは

;extension=sqlite.so

とコメントアウトしたら pear が起動できるようになった。pear の起動ができないんじゃ CLI 版の意味ないんで、CLI からの SQLite の利用はとりあえず諦めるということで。(この辺の ini ファイルの扱いについてはマニュアルの 実行時設定 参照。)

FreeBSD では普通に使えているし、これは OSX 版の標準の PHP だけの挙動かも。全部 Fink で入れたらまた違うのかもしれないけど、面倒なんでやってない。