发布于2026-07-08 阅读(0)
扫一扫,手机访问
不少人在XAMPP里折腾SQLite时,都卡在同一个地方:扩展明明内置了,可代码一跑就报错。问题多半出在Windows环境下没手动启用那两个DLL文件。说白了,new SQLite3()或PDO("sqlite:...")要是报“class not found”或“could not find driver”,十有八九是扩展没加载上。
很多人改了错的php.ini——XAMPP里可能有多个,带-dist后缀的是模板,无后缀的才是运行时加载的。最可靠的方式是:在Web目录下建一个info.php,内容写;浏览器访问http://localhost/info.php;搜索“Loaded Configuration File”,看到的路径就是你要编辑的那个php.ini。
打开上一步确认的php.ini,查找并取消这三行的注释(删掉开头的分号;):
extension=php_sqlite3.dllextension=php_pdo_sqlite.dllextension=sqlite3
需要注意的是,extension=sqlite3这行在较新XAMPP(如v3.3.x)中可能不存在,也不需要补;重点是前两行。如果只开php_sqlite3.dll而没开php_pdo_sqlite.dll,PDO方式就会报“could not find driver”。改完保存,记得重启Apache——不是只刷新页面。
别信“我改了ini就一定生效”,必须实测:
php -m | findstr sqlite(Windows)或php -m | grep sqlite(macOS/Linux),应输出sqlite3和pdo_sqliteinfo.php页面搜索“sqlite”,看到两块表格(SQLite3和PDO drivers → sqlite)才算到位,能输出对象说明类可用;再试new PDO('sqlite:test.db')看PDO是否通常见失败点:Apache用的是另一个PHP实例(比如系统PATH里的旧版PHP),或修改后没重启服务,或扩展DLL文件实际缺失(检查xampp/php/ext/下是否存在php_sqlite3.dll和php_pdo_sqlite.dll)。

即使扩展开了,new SQLite3('test.db')仍可能静默失败或报错,原因往往不在扩展本身:
SYSTEM或当前用户身份运行,但若把DB放在C:\Program Files\下就大概率被拦截__DIR__ . '/data/test.db'test.db文件不需预先创建,SQLite会自动建,但父目录不行dirname(__FILE__)拼接SQLite是进程内数据库,没有服务、不占端口、不需用户名密码——但它对文件系统权限和路径语义极其敏感,这点比扩展启用本身更常导致“连不上”。