sqlite_open() 已废弃且自 php 5.4 起被移除,必须改用 pdo(推荐,支持预处理与事务)或 sqlite3(轻量,适合简单操作),注意路径权限与工作目录差异。

PHP 怎么用 sqlite_open() 打开 SQLite 文件?别用了,它已废弃
PHP 5.4 起,sqlite_open() 就被彻底移除,现在调用会直接报 Fatal error: Uncaught Error: Call to undefined function sqlite_open()。这不是配置问题,是函数本身不存在了——你装再新版本的 PHP 都没用。
必须改用 PDO 或 SQLite3 扩展,两者都默认启用(PHP 5.3+ / 7.x / 8.x 均内置),无需额外安装扩展(除非你手动关了)。
用 PDO 连接 SQLite 文件最稳妥
PDO 支持预处理、事务、统一接口,适合多数场景。连接时路径必须是绝对路径或相对于当前工作目录的有效路径,相对路径容易因 cli 和 web 环境不同而失败。
-
$pdo = new PDO('sqlite:/var/www/db/test.db');—— 推荐用绝对路径 -
$pdo = new PDO('sqlite:' . __DIR__ . '/data.db');—— 用__DIR__拼接更可靠 - 如果文件不存在,PDO 会自动创建空数据库文件(但不会建表)
- 权限要检查:
www-data(Apache)或www(Nginx)用户得有该路径的读写权限
用 SQLite3 类更轻量,适合简单操作
如果你只做增删查改、不涉及复杂事务或绑定参数,SQLite3 更直观:
微信分销商城电脑手机三合一是以php+MySQL进行开发的微信商城分销系统源码。安装步骤:1、打开:网址/diguo/index.php 用户密码是admin 123456 登录进去配置数据库信息。2、用帝国还原恢复数据库.3、修改data文件夹里的config.php (data/config.php)数据库配置信息4、登录网站后台,网址:域名/admin/index.php 后台帐号是:
立即学习“PHP免费学习笔记(深入)”;
$db = new SQLite3('/path/to/app.db');
$result = $db->query('SELECT name FROM users LIMIT 1');
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
echo $row['name'];
}
$db->close();
注意点:
-
SQLite3不支持原生预处理占位符(如?),要用bindValue()或拼接前手动过滤(不推荐) - 执行 DDL(如
CREATE TABLE)后,记得检查$db->lastErrorCode()是否为 0 - 打开只读数据库:用
new SQLite3($file, SQLITE3_OPEN_READONLY)
常见打不开的原因和排查顺序
不是代码写错,往往是环境或路径卡住:
- 错误信息是
Unable to open database: unable to open database file→ 先确认路径存在、文件可写、父目录有执行(x)权限 - Web 下提示
Permission denied→ 检查文件属主是否为 web 用户(如chown www-data:www-data app.db) - CLI 下能打开,浏览器里打不开 → 当前工作目录不同,
getcwd()打印出来看看 - SQLite 文件被其他进程锁住(比如另一个 PHP 脚本没调
close()或崩溃退出)→ 查看是否有.db-shm/.db-wal文件残留
SQLite 是单文件数据库,没有服务端,但“打不开”十有八九是权限或路径问题,而不是驱动或扩展没启。










