【发布时间】:2010-02-18 14:22:27
【问题描述】:
显然,我在 Linux 上。 PHP 脚本似乎在“www-data”用户下运行。我还可以看到上传的文件最终位于默认的 /tmp 目录中,每个文件的名称前面都带有“php”。我猜都是标准的。所有这些文件的权限是 -rw-------- 即 600,用户 'www-data',组 'www-data'。问题是我有一个在用户“postgres”下运行的 PostgresQL 数据库服务器,它需要能够读取这些文件,因为它将它们的内容插入到数据库中。目前它显然不能。当然,作为一项规则,数据库查询和函数在任何用户连接到数据库(我也连接为“www-data”)下运行,但这里我们谈论的是必须作为“postgres”调用的服务器端函数.这是 PostgresQL 的限制,无论好坏。
我确实考虑到了安全性,但我认为如果我允许 postgres 读取这些文件,或者放宽这些文件的权限,世界不会崩溃。
如何控制创建这些文件的权限?显然 PHP 会自己创建它们,例如在 POST 文件上传时,但我找不到任何配置开关。另外,我的 /tmp 具有权限 'drwxrwxrwt' (777) 并且归用户 'root' 组 'root' 所有。
我尝试使用 'php_value upload_tmp_dir' 更改上传目录,但似乎没有效果 - PHP 仍将临时文件存储在 /tmp 中。
我不想与“move_uploaded_file”或“chmod”一起使用,因为它们会写入文件系统,除了数据库服务器插入记录之外,我想避免这种情况。
【问题讨论】: