ThinkPHP 5 默认不支持 SQLite3 缓存,需手动创建 Sqlite3.php 驱动类并配置启用 pdo_sqlite 和 sqlite3 扩展,指定数据库路径与表结构后即可使用。

ThinkPHP 5 默认不支持 SQLite3 作为缓存驱动,原生 Sqlite.php 驱动仅适配 SQLite2,无法直接用于 SQLite3 数据库。要实现 SQLite3 缓存,需手动补充驱动并正确配置。
启用 PHP 的 SQLite3 扩展
确保你的 PHP 环境已开启 pdo_sqlite 和 sqlite3 扩展(通常两者都需启用):
- 打开
php.ini,取消注释或添加:extension=php_pdo_sqlite.dll(Windows)extension=pdo_sqlite.so(Linux/macOS) - 重启 Web 服务(如 Apache/Nginx)后,用
phpinfo()确认 PDO drivers 中包含sqlite
添加自定义 Sqlite3 缓存驱动
TP5.0 的 think\cache\driver\ 目录下没有 SQLite3 支持类,需自行创建:
- 新建文件:
thinkphp/library/think/cache/driver/Sqlite3.php - 该类需继承
\think\Cache,实现init、get、set、rm、clear等核心方法 - 内部使用
PDO连接 SQLite3 数据库,表结构建议含字段:var(TEXT, UNIQUE)、value(BLOB)、expire(INTEGER)、tag(TEXT) - 建表示例(在数据库文件中执行):
CREATE TABLE IF NOT EXISTS cache (var TEXT UNIQUE NOT NULL, value BLOB, expire INTEGER DEFAULT 0, tag TEXT DEFAULT NULL);
配置缓存类型为 sqlite3
在应用配置(如 config/cache.php 或全局配置数组)中设置:
立即学习“PHP免费学习笔记(深入)”;
-
'type' => 'sqlite3'(注意小写,TP 对首字母大小写不敏感,但全小写最稳妥) -
'path' => ROOT_PATH . 'runtime/cache.db'(指定 SQLite3 数据库文件绝对路径) -
'table' => 'cache'(可选,对应上面建的表名,默认可设为cache) -
'prefix' => 'tp5_'(可选,避免键名冲突) -
'expire' => 3600(可选,单位秒;0 表示永不过期)
完整配置示例:
'cache' => [
'type' => 'sqlite3',
'path' => RUNTIME_PATH . 'cache.db',
'table' => 'cache',
'prefix' => 'tp5_',
'expire' => 3600,
],
验证与注意事项
首次运行时检查:
- 确认
cache.db文件可写,且目录存在 - 若开启
app_debug,可在日志中查看是否加载了Sqlite3驱动类 - 缓存操作如
Cache::set('key', 'val')应写入数据库;用 SQLite 工具打开cache.db查看cache表是否新增记录 - 旧版 TP5 缓存驱动中
Sqlite.php不可用,请勿混用;务必使用你自建的Sqlite3.php



















