php数据库怎么进sqlite文件_php打开sqlite数据库步骤【步骤】

1次阅读

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

php数据库怎么进sqlite文件_php打开sqlite数据库步骤【步骤】

PHP 怎么用 sqlite_open() 打开 SQLite 文件?别用了,它已废弃

PHP 5.4 起,sqlite_open() 就被彻底移除,现在调用会直接报 Fatal Error: Uncaught Error: Call to undefined function sqlite_open()。这不是配置问题,是函数本身不存在了——你装再新版本的 PHP 都没用。

必须改用 PDOSQLite3 扩展,两者都默认启用(PHP 5.3+ / 7.x / 8.x 均内置),无需额外安装扩展(除非你手动关了)。

PDO 连接 SQLite 文件最稳妥

PDO 支持预处理、事务、统一接口,适合多数场景。连接时路径必须是绝对路径或相对于当前工作目录的有效路径,相对路径容易因 cliweb 环境不同而失败。

  • $pdo = new PDO('sqlite:/var/www/db/test.db'); —— 推荐用绝对路径
  • $pdo = new PDO('sqlite:' . __DIR__ . '/data.db'); —— 用 __DIR__ 拼接更可靠
  • 如果文件不存在,PDO 会自动创建空数据库文件(但不会建表)
  • 权限要检查:www-dataapache)或 wwwnginx)用户得有该路径的读写权限

SQLite3 类更轻量,适合简单操作

如果你只做增删查改、不涉及复杂事务或绑定参数,SQLite3 更直观:

立即学习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 是单文件数据库,没有服务端,但“打不开”十有八九是权限或路径问题,而不是驱动或扩展没启。

text=ZqhQzanResources