PDO SQLite 创建数据库默认权限

PDO SQLite create database default permissions

当使用 PDO sqlite PHP 适配器时,创建新的 sqlite 数据库文件时组权限设置为只读,并且不支持 umask。

我需要每个数据库文件都可以按组写入。有什么方法可以实现吗?

编辑:我知道如何更改文件的权限,我想问的是是否可以使用正确的权限(根据进程 umask)创建文件。

好像有一个 SQLITE_DEFAULT_FILE_PERMISSIONS compilation parameter.

似乎umask is applied on top of it 限制它,如果有必要的话。 所以用 SQLITE_DEFAULT_FILE_PERMISSIONS=666 重新编译比依赖 umask 更有意义。太糟糕了,它不是 sqlite 中的默认选项。

在使用sqlite的连接调用打开数据库文件之前,您可以将其作为普通文件打开并获得所需的权限。这将创建一个空文件,除非该文件已经存在。 Sqlite 将用数据库填充该空文件。

这比在文件创建后使用 chmod 更安全,原因有二:

  • 在您调用 chmod
  • 之前,其他用户极有可能打开该文件
  • 在某些情况下(例如为 WAL 配置时),sqlite 会创建多个文件。它将尊重预先存在的空文件的权限并将它们用于其他文件。在主文件上使用 chmod 会忘记为其他文件设置权限。