Ubuntu 22.04 で baserCMS インストール時に SQLite が選択できない
baserCMS を試してみようと、Ubuntu 20.04 に入れようとしたら、PHP 8 じゃないとだめだったので、ついでに Ubuntu も 22.04 に do-release-upgrade
して、baserCMS を Nginx 上にインストールしましたが、初期設定で SQLite が選択できませんでした。
今回は baserCMS+SQLite でどのくらいのパフォーマンスが出るかも確認したかったので、これはまずいと思い調べました。
ググり方が悪かったのか、ウェブから情報を得ることができなかったので、ソースを探しました。
$ find . -name '*.php' | xargs egrep -i sqlite
:
./vendor/baserproject/bc-installer/src/Service/InstallationsService.php:
/* SQLite利用可否チェック */
./vendor/baserproject/bc-installer/src/Service/InstallationsService.php:
if (in_array('sqlite', $pdoDrivers) && extension_loaded('sqlite3') && class_exists('SQLite3')) {
:
InstallationsService.php
を開いて、まず $pdoDrivers
を確認すると。
$pdoDrivers = PDO::getAvailableDrivers();
ですので、上のチェック部分の確認用PHPを作成します。
<?php
namespace Userland {
use PDO;
use PDOException;
use SQLite3;
$pdoDrivers = PDO::getAvailableDrivers();
print_r($pdoDrivers);
if (extension_loaded('sqlite3')) {
print("sqlite3 extension is loaded.\n");
}
if (class_exists('SQLite3')) {
print("SQLite3 class is exists.\n");
}
}
実行します。
$ php ./test.php
Array
(
[0] => mysql
)
みごとに利用条件がありませんでした。
PDO で SQLite を使用するには、php-sqlite3 パッケージが必要ということがわかりましたので、インストールします。
$ sudo apt install php-sqlite3
インストール後にもう一度確認。
$ php ./test.php
Array
(
[0] => mysql
[1] => sqlite
)
sqlite3 extension is loaded.
SQLite3 class is exists.
条件は整ったようなので、もう一度 BaserCMS の初期設定を行ったら、SQLite が選択でき、無事初期設定が完了しました。