らぎめも

らぎらぎのノート

ユーザ用ツール

サイト用ツール


wordpress:sqlite

SQLiteで動かす

WordPressを動作させるためには、データベースとしてMySQLが必要だ。したがって、さくらインターネットのライトプランやlolipopのエコノミープランなどのMySQLのない安価なプランではWordPressをそのまま動作させることができない。

WordPress公式でもSQLiteのコアへの実装を進めているが、時間がかかっておりまだ完了していない。

現状のWordPressのバッグアップ

今回はMySQLで動かしているWordPressをSQLiteに変更した。作業を行う前に、WordPressのデータをすべてエクスポートしておく必要がある。プラグインやテーマの設定も個別にエクスポートが必要なものがあるので、面倒だが逐一エクスポートなりバックアップの機能を使って保存しておく。(今回はそれを忘れたので、WordPress全体をバックアップからリストアしてエクスポートするという手戻りが生じてしまった)

wp-sqlite-dbのインストール

  • 使用するのはwp-sqlite-db
    • src/db.php を wp-content/ にコピーする。
    • 今回はMySQLからの移行なので、wp-config.phpのキーの書き換えを行った。
    • データベースは 'wp-content/database/.ht.sqlite' に作成される
    • これを変更するには DB_DIR, DB_FILE を変更する(README.md

SQLite3がない

WordPressの初期設定が表示され、インストールもいできて「順調だ」と思っていたら、ログインしたところ…

Fatal error: Uncaught Error: Class 'SQLite3' not found in D:\xampp\htdocs\b2b\wp-content\db.php:2840 Stack trace: #0 D:\xampp\htdocs\b2b\wp-includes\update.php(78): WP_SQLite_DB\wpsqlitedb→ … #7 {main} thrown in D:\xampp\htdocs\b2b\wp-content\db.php on line 2840

というエラーが出てしまった。XAMPPを使っているせいらしい。

extension=pdo_sqlite
extension=sqlite3

のコメントアウトを外す。これで動作した。

phpLiteAdminをインストール

phpMyAdminのようなデータベースを管理するGUIが使いたい。検索して見つけたのが、

  1. phpliteadmin.php と phpliteadmin.config.sample.php をサーバー上の適当なところにコピーする
  2. phpliteadmin.config.sample.php を phpliteadmin.config.php にリネームして編集する
    • $password - ログインパスワード
    • $directory - SQLiteのデータベース(.ht.sqlite)が存在するディレクトリ
  3. ブラウザで phpliteadmin.php にアクセスする

とりあえずlocalなXAMPP+PHP7の上で動作したので、次はlolipopで動作させてみるつもり。

PHP8でエラー

PHP7からPHP8にバージョンスイッチしたら、wp-sqlite-dbで警告が出るようになった。

Warning: Undefined property: stdClass::$name in D:\xampp\htdocs\b2b\wp-content\db.php on line 2272
Warning: Undefined property: stdClass::$type in D:\xampp\htdocs\b2b\wp-content\db.php on line 2273
Warning: Undefined property: stdClass::$notnull in D:\xampp\htdocs\b2b\wp-content\db.php on line 2274
Warning: Undefined property: stdClass::$pk in D:\xampp\htdocs\b2b\wp-content\db.php on line 2275
Warning: Undefined property: stdClass::$dflt_value in D:\xampp\htdocs\b2b\wp-content\db.php on line 2276

該当行

$_columns['Field'] = $row->name;
$_columns['Type'] = $row->type;
$_columns['Null'] = $row->notnull ? "NO" : "YES";
$_columns['Key'] = $row->pk ? "PRI" : "";
$_columns['Default'] = $row->dflt_value;
$_results[] = new ObjectArray($_columns);

Null 合体演算子 null coalescingを使って極めていい加減な修正を施す

$_columns['Field'] = $row->name ?? "";
$_columns['Type'] = $row->type ?? "";
$_columns['Null'] = ($row->notnull ?? "") ? "NO" : "YES";
$_columns['Key'] = ($row->pk ?? "") ? "PRI" : "";
$_columns['Default'] = $row->dflt_value ?? "";

一方、phpLiteAdminはPHP8では500エラーで動かなかった:-?

wordpress/sqlite.txt · 最終更新: 2024/03/17 by 管理者

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki