PHP 8.6 默认内置 SQLite3 支持,需启用 sqlite3 和 pdo_sqlite 扩展;通过 php --ini 找到 php.ini,取消两行分号注释并重启服务;推荐用 PDO(支持预处理)或 SQLite3 类连接,路径须为绝对路径且有读写权限。

PHP 8.6 默认已内置 SQLite3 支持,但需确认并启用对应扩展,而非“安装驱动”——SQLite 是嵌入式数据库,不依赖外部服务或独立驱动包。配置核心是确保两个关键扩展处于激活状态,并正确使用。
确认 PHP 8.6 已启用 sqlite3 和 pdo_sqlite 扩展
这两个扩展在 PHP 8.6 中仍为标配(除非编译时显式禁用),但默认可能被注释掉。操作步骤如下:
- 运行
php --ini查看加载的 php.ini 路径 - 用文本编辑器打开该文件,搜索以下两行:
;extension=sqlite3;extension=pdo_sqlite - 删除每行开头的分号
;,保存文件 - 若找不到这两行,可手动添加:
extension=sqlite3extension=pdo_sqlite
验证扩展是否生效
创建一个 info.php 文件,内容为:
<?php phpinfo();
通过浏览器或 CLI 执行 php info.php,搜索页面中是否同时出现:
- sqlite3(版本信息、enable 指示)
- pdo_sqlite(在 PDO support 表格中列为 enabled)
连接 SQLite 数据库的两种推荐方式
用 PDO(推荐,安全且可移植)
try {
$pdo = new PDO('sqlite:/var/www/myapp/data.db');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)");
} catch (PDOException $e) {
die("连接失败:" . $e->getMessage());
}
注意:DSN 中的路径必须为绝对路径,且 PHP 进程对所在目录有读写权限。
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
用原生 SQLite3 类(轻量直接)
try {
$db = new SQLite3('/var/www/myapp/data.db');
$db->exec("CREATE TABLE IF NOT EXISTS logs (ts TEXT, msg TEXT)");
} catch (Exception $e) {
die("初始化失败:" . $e->getMessage());
}
该方式无需 PDO,适合纯 SQLite 场景,但不支持预处理语句的统一绑定语法(需手动转义)。
常见问题排查要点
- 数据库文件路径错误或不可写 → 检查
open_basedir限制与目录权限(如 macOS/Linux 的chmod 755父目录,644数据库文件) - 重启服务未执行 → Apache/Nginx 或 php-fpm 必须完全重启,非重载
- Windows 下 DLL 依赖缺失 → 确保
libsqlite3.dll在系统 PATH 中(PHP 8.6 Windows 版通常已自带) - 使用相对路径导致失败 → SQLite 不接受
./data.db这类路径,一律改用__DIR__ . '/data.db'构造绝对路径
PHP 8.6 对 SQLite 的兼容性稳定,无新增配置项。只要扩展启用、路径合理、权限到位,即可立即使用。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










