PHP4 + SQLite3の基本的な使い方

SQLite2とSQLite3、PHP4とPHP5の組み合わせでごちゃごちゃしていて利用方法を探すに手間取ってしまいましたが、シンプルに利用することができました。
ここではPHP4とSQLite3の組み合わせを取り上げます。

<?php
echo sqlite3_libversion();           // includeしているSQLiteそのもののバージョン
$dbhandle = sqlite3_open("test.db");
?>

これを実行して、./test.db が作成されれば OK です。

APIリファレンスはこちら。
php-sqlite3 : Main / API


基本的なことですが、モジュール版PHPで動かしているときは動作権限がapacheになります。そのためディレクトリにo+w(他人に書き込み権限)がないと、ファイル作成を伴う初回のopenに失敗します。
ただテーブルの初期化を考慮すると、ローカルでデータベースファイルを作成・初期化してアップロードを行えばよいでしょう。データベースファイルの所有権が自分になるので、ディレクトリのパーミッションは705のままで済ませることができます。


ローカルでの動作テストのため、windows版のセットアップも行いましょう。
まずは php_sqlite3.dll をダウンロードします。
http://rtokiwa.s55.xrea.com/wiki/index.php?php_sqlite3_win32
これを /extensions ディレクトリにコピーをして、php.iniに

extension = php_sqlite3.dll

と追記します。このとき

extension_dir = "./extensions"

と extension_dir が正しく指定されているかも確認しましょう。*1
これでセットアップは完了です。バイナリ配布して頂けているおかげで簡単ですね。:-)
あとは冒頭のテストを試してみてください。


ただしSQLite3エクステンションはまだα版の品質しかないと掲げていることにご注意下さい。

Please note that this project is still alpha-quality. Please test and report if it works for you and how it can be enhanced.
php-sqlite3 : Main / HomePage

もっとも、last modified on October 14, 2005, at 09:22 AM と古いタイムスタンプですし、ChangeLogを見るとだいぶ枯れているように思います。2007/04/04とごく最近に1件の機能拡張*2と2件のバグフィックスを行っているので放置されているわけでもないですし、バグトラッカーもずいぶん静かですから。
不安定なものをxreaが正式採用するとも思えませんしね。


余談ですが、SQLite2のwinバイナリはたぶんこれかな?
http://pecl4win.php.net/list.php/4_4->php_sqlite.dll

*1:php.ini-recommended には、アーカイブディレクトリ構成とは異なり "./" が指定されていました。

*2:BLOB対応