PHPでSQLite3をつかうには?
PHPでSQLite3を使うために、どのようなライブラリーを用意すればいいのか知りたいです。
たとえばRubyの世界では sqlite3-ruby というgemがよく使われています。
PHPの世界にもこのようなライブラリーがあるのでしょうか?
https://laravel.com/docs/10.x/database#introduction によると、LaravelはSQLite3をサポートしています。
LaravelでSQLite3を使うアプリケーションを作成すれば、PHPでSQLite3を使うときに必要な環境設定がわかるはずです。
実行環境はWSL2上のUbuntuです。
Composerはインストール出来ているものとします。
Laravelアプリケーションの作成
空のLaravelアプリケーションを作ります。
https://laravel.com/docs/10.x#your-first-laravel-project の指示に従って、次のコマンドを実行します。
composer create-project laravel/laravel example-app
起動するか確認します。
cd example-app
php artisan serve
http://localhost:8000/ を開く次の画面がひらき、Laravelアプリケーションが作成出来たことがわかります。
SQLite3を使う
.evnファイルを編集します。
DB_CONNECTION=sqlite
Laravelでは.envファイルで使用するDBを変更するようです。
ここで指定したキーで config/database.php
から設定を探してDBに接続するようです。
'connections' => [
'sqlite' => [
'driver' => 'sqlite',
'url' => env('DATABASE_URL'),
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
],
使用するSQLite3のデータファイルは database.sqlite
と言う名前のようです。
空ファイルを作成しましょう。
touch database/database.sqlite
SQLite3が動くか確認するためにマイグレーションする
DBの設定ができたのでマイグレーションしてみます。
php artisan migrate
次のようなエラーがでました。
SQLite3のドライバーが無いそうです。
SQLite3のドライバーPDO_SQLITEをインストールする
PHPにはPDOというデータベース接続用のインターフェースがあります。
.NETでのADO.NETのようなものです。
この中にPDO_SQLITEがあります。
これが前述のエラーメッセージで無いといわれたドライバーです。
PDO_SQLはPHP本体の拡張モジュールとして提供されています。
UbuntuではPHPの拡張モジュールをaptパッケージでインストールします。
パッケージを探します。
apt-cache search php-sqlite
aptパッケージはPHPのバージョンごと分かれています。
自分が使っているPHPのバージョンと一致したパッケージをインストールします。
sudo apt install php8.2-sqlite3
もう一度マイグレーションを実行すると動きます。
php artisan migrate
まとめ
PHPではSQLite3用のドライバーは、PHP本体の拡張モジュールとして提供されています。
また、PHPでDBに接続するクラスはPDOと呼ばれています。