PHP:创建文件并保留文件权限

时间:2011-01-21 03:12:04

标签: php permissions file-permissions

我现在有一个简单的架构,看起来像这样:

用户发送电子邮件>后缀> Procmail> PHP脚本>写入第三方Web App

第三方网络应用恰好是CMS(我使用其API创建记录)。

我遇到的问题是用户正在向“支持”用户发送电子邮件,其中Web服务器在用户“apache”上运行。

由于此设置,所有附件都是使用“support”用户和“support”组创建的,但是我需要将它们实际创建为“apache:apache”(以便CMS可以读取和在其模板中显示这些附件)。

我理解PHP有chown和chmod函数,但是当尝试从命令行运行这些命令时,我无法将文件的所有权移交给用户“apache”。

我是否有一种简单的方法可以保留基于create目录的文件权限?这是我需要从php.ini更改的内容吗?或许我需要重新考虑架构?

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

如果您通过以下方式运行Linux,则可以在文件系统级别解决此问题:

  • chown support:apache foo
  • chmod 775 foo
  • chmod g + s foo

其中foo是保存文件的文件夹。

现在所有(新创建的)文件都应该由support支持:apache。如果你确保将文件创建为664,那么这两个地方都可以读/写它。

这不是唯一(也许甚至不是最好的)解决问题的方法,但它可能是最简单的。

答案 1 :(得分:0)

我想也许你需要重新思考你的架构,并为第三方应用程序运行apache来创建文件。一种方法是使用setuid脚本来调用API。

除了root之外,

chown通常无法工作,因为让非root用户将文件所有权更改为其他人通常是一个安全漏洞。

答案 2 :(得分:0)

为了解决这个问题,我最终做了一些狡猾的事。

在以不同的用户身份创建文件后,我运行了chgrp和chmod命令(使用PHP API),所有这些命令都是honkie dory。谢谢你的回复。