【问题标题】:PHP chgrp operation not permitted不允许 PHP chgrp 操作
【发布时间】:2025-12-01 16:40:01
【问题描述】:

我有一些 PHP 代码需要使用 chgrp() 更改文件组。该代码在另一台服务器(php 5.2)上工作,但是当迁移到新服务器(php 5.3)时,它停止工作

chgrp():不允许操作。

我已经仔细检查了用户帐户 apache 是否具有对文件的写入权限(并且它是所有者,只是为了更加确定)。我还仔细检查了 PHP safe_mode 是否已关闭。

还有什么建议吗?

【问题讨论】:

  • 组是刚刚创建的吗?有时您必须在新组发生之前注销/登录
  • 组已经存在,因此只需将它们添加到 apache 用户即可。小组的事情有点抓住了稻草,因为我正在尝试更改 apache 本身创建的文件的权限
  • 我知道这可能会引发 PalmToFaceException,但您能否再次检查 file_exists() 是否为该文件返回 true?
  • 是的,我可以确认文件存在

标签: php apache webserver


【解决方案1】:

我猜你正在尝试将一个组分配给目标文件/目录,apache不是该组的成员,正如它在chgrp 文档中提到的那样:

只有超级用户可以任意更改文件的组;其他用户可以将文件的组更改为该用户所属的任何组。

我不确定它背后的想法是什么,但它说您不应该能够将您的文件/目录分配给您不是其中成员的组;因此apache 用户无法将其任何文件/目录分配给您可能想到的大多数组(默认配置)。

附:您也许可以使用与您的apache 用户相同的权限来chmodchown,但同样,不允许将这些文件分配给您不是其中成员的其他组。

【讨论】:

    【解决方案2】:

    所以问题刚刚停止发生。我真的开始添加一些调试语句,并在添加新语句时刷新日志,然后我注意到错误突然停止出现在日志中。我猜需要重新启动一些东西,这发生在我的调试之间。我不知道。但理论上安全模式关闭,文件存在,并且作为文件所有者/创建者的 apache 用户应该从一开始就工作。

    【讨论】: