PHP8环境下需启用pdo_sqlite扩展才能连接SQLite数据库,方法是修改php.ini取消extension=pdo_sqlite注释(Linux/macOS)或启用php_pdo.dll与php_pdo_sqlite.dll(Windows),重启服务后运行测试脚本验证三处✅即成功。

PHP8环境下PDO扩展无法连接SQLite数据库,常见于新装环境或升级后pdo_sqlite驱动未启用、路径权限异常或模块加载失败。
确认PHP版本与扩展状态
在终端执行 php -v 确认当前为 PHP8.x(如 8.2.15 或 8.3.10),再运行 php -m | grep -i sqlite。若输出为空或仅显示 sqlite3 而无 pdo_sqlite,说明 PDO SQLite 驱动未加载。
注意:PHP8 默认不再捆绑 sqlite(即旧版 sqlite2)扩展,【必须使用 pdo_sqlite 或 sqlite3 扩展之一】,而 PDO 方式是跨数据库兼容的首选。
Linux/macOS 下启用 pdo_sqlite 扩展
第一步:打开 php.ini 文件。可通过 php --ini 查看加载路径,通常位于 /etc/php/8.x/cli/php.ini(CLI)或 /etc/php/8.x/apache2/php.ini(Apache)。
立即学习“PHP免费学习笔记(深入)”;
第二步:搜索 extension=sqlite 和 extension=pdo_sqlite。若存在被注释的 ;extension=pdo_sqlite,删除分号;若整行缺失,直接在 [extensions] 区域下方新增一行:extension=pdo_sqlite。
第三步:保存后重启 Web 服务。Apache 用户执行 sudo systemctl restart apache2(Debian/Ubuntu)或 sudo apachectl restart(macOS);Nginx + PHP-FPM 用户执行 sudo systemctl restart php8.x-fpm 并重启 nginx。
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
⚠️ 注意:PHP8.2+ 在部分发行版中将扩展名改为 pdo_sqlite.so(Linux)或 pdo_sqlite.dylib(macOS),但 php.ini 中仍写 extension=pdo_sqlite 即可,PHP 会自动匹配后缀。
Windows 下启用 pdo_sqlite 扩展
方法一:检查 php/ext/ 目录是否存在 php_pdo_sqlite.dll。PHP8 官方 Windows 包已内置该文件,无需额外下载。
方法二:编辑 php.ini,取消以下两行的注释:
;extension=php_pdo.dll → 改为 extension=php_pdo.dll;extension=php_pdo_sqlite.dll → 改为 extension=php_pdo_sqlite.dll
顺序不能颠倒:必须先加载 php_pdo.dll,再加载 php_pdo_sqlite.dll,否则启动时报“unable to load dynamic library”错误。
验证扩展是否生效
创建一个 test-sqlite.php 文件,内容如下:
<?php<br>
if (extension_loaded('pdo_sqlite')) {<br>
echo "✅ pdo_sqlite 已加载";<br>
if (in_array('sqlite', PDO::getAvailableDrivers())) {<br>
echo " ✅ SQLite 驱动可用";<br>
try {<br>
$db = new PDO('sqlite::memory:');<br>
echo " ✅ 内存数据库连接成功";<br>
} catch (PDOException $e) {<br>
echo " ❌ 连接失败:" . $e->getMessage();<br>
}<br>
} else {<br>
echo " ❌ SQLite 驱动未注册";<br>
}<br>
} else {<br>
echo "❌ pdo_sqlite 扩展未加载";<br>
}<br>
?>
通过浏览器或 CLI 执行该脚本。只要看到三处 ✅,就表示 pdo_sqlite 已完整就绪,可立即用于项目中的 SQLite 数据库操作。


















