12
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

記事投稿キャンペーン 「PHP強化月間」

PHPでSQLite3をつかうには?をLaravelアプリケーションを作ってみて確認する

Posted at

PHPでSQLite3をつかうには?

PHPでSQLite3を使うために、どのようなライブラリーを用意すればいいのか知りたいです。
たとえばRubyの世界では sqlite3-ruby というgemがよく使われています。
PHPの世界にもこのようなライブラリーがあるのでしょうか?

https://laravel.com/docs/10.x/database#introduction によると、LaravelはSQLite3をサポートしています。
image.png

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アプリケーションが作成出来たことがわかります。

image.png

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

次のようなエラーがでました。

image.png

SQLite3のドライバーが無いそうです。

SQLite3のドライバーPDO_SQLITEをインストールする

PHPにはPDOというデータベース接続用のインターフェースがあります。
.NETでのADO.NETのようなものです。
この中にPDO_SQLITEがあります。
これが前述のエラーメッセージで無いといわれたドライバーです。

PDO_SQLはPHP本体の拡張モジュールとして提供されています。
UbuntuではPHPの拡張モジュールをaptパッケージでインストールします。
パッケージを探します。

apt-cache search php-sqlite

image (1).png

aptパッケージはPHPのバージョンごと分かれています。
自分が使っているPHPのバージョンと一致したパッケージをインストールします。

sudo apt install php8.2-sqlite3

もう一度マイグレーションを実行すると動きます。

php artisan migrate

image (2).png

まとめ

PHPではSQLite3用のドライバーは、PHP本体の拡張モジュールとして提供されています。
また、PHPでDBに接続するクラスはPDOと呼ばれています。

参考

12
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?