九保すこひです(フリーランスのITコンサルタント、エンジニア)
さてさて、これまで私はクライアント様方から様々なタイプのご依頼を受けてきました。もちろんLaravel関連の開発が多いのですが、そんな中、少し「変化球」な内容がありました。
それは・・・
データベースにSQLiteを使う
というものです。
というのも、クライアントさんにお話を伺うと・・・
- そのアプリケーションは今後コピーして複数で運用したい
- でもMySQLなどの初期設定はノウハウがないのでできない
とのことでしたので、「でしたらSQLiteはどうでしょう😉」と提案させていただきました。
なぜなら、SQLiteはファイルを使ったデータベースなので、初期設定を済ませたファイルをつくっておけば後はコピーするだけですし、さらにレンタルサーバーもSQLiteには対応してるところが多かったからです。
そこで!
今回はそんなSQLiteをLaravelで使う方法をご紹介します。
ぜひ楽しみながらやってみましょう❗

「SQLiteって
思ったより高速ですね😲❗」
開発環境: Laravel 7.x、Ubuntu 18.04、nginx 1.14.0
目次
SQLiteをインストールする
まず以下のコマンドを実行してSQLiteがインストールされているか確認しておきましょう。
sqlite3 --version
もしインストールされていない場合は次のコマンドでインストールしてください。
sudo apt install sqlite3
LaravelでSQLiteを使う設定をする
.envを変更する
LaravelでSQLiteを使うには、.env内にあるDB_CONNECTIONを変更します。
DB_CONNECTION=sqlite # 👇 その他は不要なのでコメントアウト #DB_HOST=127.0.0.1 #DB_PORT=3306 #DB_DATABASE=***** #DB_USERNAME=***** #DB_PASSWORD=*****
なお、LaravelのSQLiteファイルは/database/database.sqliteがデフォルトですが、変更したい場合はDB_DATABASEで指定できます。
DB_DATABASE=/PATH/TO/YOUR/SQLITE/database.db
ファイルを作成する
SQLiteはファイルを使ったDBですので、まず「/database/database.sqlite」というDBファイルを作成します。

ちなみに、後ほどマイグレーションを実行して以下のようなエラーが出た場合はファイルの権限が正しくない場合があります。
unable to open database file ...
そんな場合、次のコマンドで所有者と権限を変更してみてください。
sudo chown www-data:(ログインしているユーザー名) database.sqlite
sudo chmod 775 database.sqlite
なお、www-dataの部分は実行環境によって違ってきますので、次のコードをPHPで実行してみるといいでしょう。
echo exec('whoami'); // 👈 PHPを実行しているユーザー名が表示されます
これでSQLiteの設定は完了です!
phpLiteAdminをインストールする
SQLiteの中身をブラウザから確認できるようにphpLiteAdminをインストールします。(不要な人は次まで読み飛ばしてください)

本体を設置する
まずダウンロードページにアクセスし最新版のphpLiteAdminをダウンロードします。
ダウンロードしたファイルを展開するとphpLiteAdmin_v1-9-8-2というフォルダが作成されるので、以下のようにして移動します。
sudo mv phpLiteAdmin_v1-9-8-2 /usr/share/phpLiteAdmin
nginxの設定をする
次に、設置したphpLiteAdminに「phpliteadmin.test」としてアクセスできるようにnginxで設定しておきましょう。
以下のコードを追加して保存してください。
/etc/nginx/sites-available/default
# 👇 追加
# phpLiteAdmin
server {
listen 80;
listen [::]:80;
server_name phpliteadmin.test;
root /usr/share/phpLiteAdmin;
index index.html, index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
}
保存が完了したら、nginxを再起動します。
sudo systemctl restart nginx
ドメイン登録する
続いて、「phpliteadmin.test」ドメインの登録です。
こちらも次のコードを追加してください。
/etc/hosts
127.0.0.1 phpliteadmin.test
これで、ブラウザから「http://phpliteadmin.test/phpliteadmin.php」にアクセスできるようになります。
phpLiteAdminの設定を変更する
最後にphpLiteAdminの設定を変更します。
/usr/share/phpLiteAdmin/phpliteadmin.php
//password to gain access $password = '(ここにパスワード)'; // 👈 phpLiteAdminへのログインパスワード //directory relative to this file to search for databases (if false, manually list databases in the $databases variable) $directory = false; // 👈 データベースは直接指定するので false に変更 //whether or not to scan the subdirectories of the above directory infinitely deep $subdirectories = false; //if the above $directory variable is set to false, you must specify the databases manually in an array as the next variable //if any of the databases do not exist as they are referenced by their path, they will be created automatically // 👇 ここが接続するSQLiteのDBファイルです。 $databases = array( array( 'path'=> '/PATH/TO/YOUR/LARAVEL/database/database.sqlite', // 👈 先ほどつくったファイル 'name'=> 'Laravel 7.x' ) );
これでブラウザからログインすると次のようになります。

※なお、phpLiteAdminはGPLライセンスですので、アプリケーションに同梱する場合はお気をつけください。
エラーが出たら・・・
phpinfo()で表示した内容でsqlite3が有効になっているか確認してみてください。
もし有効になってない場合は、以下のコマンドを実行してインストールしてみてください。
sudo apt install php-sqlite3
なお、バージョンを指定する場合はこちら。
sudo apt install php7.2-sqlite3
テストしてみる
では、適当にマイグレーションとSeederをつくってDBテーブルを作ってみましょう。
php artisan migrate:fresh --seed
すると、データベースの中身は次のようになりました。

成功です😊✨
おわりに
ということで、今回はLaravelでSQLiteを使う方法をご紹介しました。
あまりSQLiteをメインで使うことは少ないかもしれませんが、簡単にコピーして気軽に使いたい場合は便利なんじゃないでしょうか。
また、データはすべて1つのファイルにまとめられているので、バックアップする場合もコピーだけでOKですよ😊✨
ぜひ機会があったら試してみてくださいね。
ではでは〜❗

「機能的には、もうLiteっていう
イメージじゃないですね👍」





