PHP 5.5重命名()修改文件并删除权限 - 为什么?

时间:2015-04-17 10:13:43

标签: php apache ubuntu permissions wpmu

我正在使用 WPMU DEV 创建的WP Smushit Pro插件。他们的支持不会走得那么远,所以我要伸出援手。我很确定这是我的服务器无论如何都有问题。

当图像被模糊时,PHP函数rename()运行并覆盖原始图像。

问题是:

权限已更改,使在线用户无法访问该图片

以前的权限:rw-r--r--(0644)
修改后的Perms:rw-------(0600)


更新

优化(smushed)图像在同一目录中创建为.tmp文件(rename()),然后copy()'覆盖现有文件。

图像优化工作流程

  1. 发送原始图片(imagename)以获得
  2. 图片返回,将其存储为imagename.tmp文件
  3. 将imagename.tmp文件复制到imagename - 原始文件

  4. 您之前是否遇到过这种类型的权限修改?
    如果是这样,可以做些什么来优雅地解决问题?

1 个答案:

答案 0 :(得分:1)

请注意重命名文件的含义。

当文件保留在同一文件系统上时,重命名实际上不是对文件本身的操作。它仅修改目录:文件所在的目录以及文件所在的目录。它不会影响文件本身的内容或属性,例如其访问权限和所有权。 (文件的名称不是文件的属性,而是指向文件的目录条目的属性。)

为了保持一致性,这也适用于跨文件系统移动文件的情况,即使在这种情况下,在封面下方,也必须创建一个新文件,并且必须复制其内容和属性。

因此,您可能需要修复用于创建对插件有效的新文件(umask)的默认权限。