0

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

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

问题是:

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

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


更新

在覆盖现有文件之前,优化(模糊)图像rename()在同一目录中创建为 .tmp 文件 ( )。copy()

图像优化工作流程

  1. 发送原始图像(图像名称)以获取 smushed
  2. 图像返回,存储为 imagename.tmp 文件
  3. 将 imagename.tmp 文件复制到 imagename - 原始文件

你以前遇到过这种权限修改吗?
如果是这样,可以做些什么来优雅地解决问题?

4

1 回答 1

1

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

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

为了保持一致性,这也适用于跨文件系统移动文件时,即使在这种情况下,在幕后,必须创建一个新文件并且其内容和属性大部分都被复制。

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

于 2015-04-17T10:36:46.120 回答