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 が選択でき、無事初期設定が完了しました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です