Php PDO SQLite创建数据库默认权限

Php PDO SQLite创建数据库默认权限,php,sqlite,pdo,file-permissions,Php,Sqlite,Pdo,File Permissions,使用PDO sqlite PHP适配器时,将创建新的sqlite数据库文件,并将组权限设置为只读,而不支持umask 我需要每个数据库文件都可以按组写入。有什么办法可以做到吗 编辑:我知道如何更改文件的权限,我正在询问是否可以使用正确的权限(根据进程umask)创建它。看起来有一个SQLITE\u默认文件\u权限 如果有必要,它似乎会限制它。 因此,使用SQLITE\u DEFAULT\u FILE\u PERMISSIONS=666重新编译而不是依赖umask是有意义的。可惜它不是sqlite

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

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


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

看起来有一个
SQLITE\u默认文件\u权限

如果有必要,它似乎会限制它。
因此,使用
SQLITE\u DEFAULT\u FILE\u PERMISSIONS=666重新编译而不是依赖umask是有意义的。可惜它不是sqlite中的默认选项。

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

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

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

创建数据库文件后,您可以使用
chmod
更改数据库文件的权限。谢谢,我知道:)文件不是在我的脚本中创建的,而是由第三方库TYPO3 Flow创建的,用于缓存。所以不,我不能chown。然后你需要更改这些文件的权限。。。或者将Apache用户和/或组更改为与创建这些文件的进程相同的用户和/或组。太长了,无法详细解释:文件是在第一页命中时创建的,而不是在部署期间创建的,我需要shell用户和nginx都可以编辑该文件,等等。。。不管怎么说,这和所问的问题无关。我正在挖掘SQLITE\u默认\u文件\u权限的方向,让我们看看它最终会出现在哪里。。。