PDO SQLite创建数据库默认权限

时间:2015-02-11 12:37:14

标签: php sqlite pdo file-permissions

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

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

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

2 个答案:

答案 0 :(得分:1)

看起来有一个SQLITE_DEFAULT_FILE_PERMISSIONS compilation parameter

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

答案 1 :(得分:0)

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

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

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