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

标签 php apache ubuntu permissions wpmu

我正在使用 WP Smushit Pro 创建的插件WPMU 开发者 .他们的支持不会走这么远,所以我伸出手。我很确定无论如何都是我的服务器有问题。
当图像被涂抹时,PHP 函数 rename()运行并覆盖原始图像。
问题是:
更改了权限,使在线用户无法访问该图像
以前的权限:rw-r--r-- (0644)
修改烫发后:rw------- (0600)

更新
优化(模糊)图像在成为 rename() 之前创建为同一目录中的 .tmp 文件(copy()) 'd 覆盖现有文件。
图像优化工作流程

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

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

    最佳答案

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

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

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

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

    关于PHP 5.5 rename() 修改文件并删除权限 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29696392/

    相关文章:

    ubuntu - Visual Studio 代码无法在适用于 Linux 的 Windows 10 子系统(ubuntu)上启动

    node.js - npm "failed to parse json"

    php - 运行 PHP 脚本时显示加载符号

    php - 如何在拨号方案中获取 dtmf 值

    php - Mongodb查询问题

    java - 使用 Apache POI 的 SXSSFSheet 从 xlsx 读取数据

    php - 从 MYSQL 表中选择包含周末的两列之间的日期的行

    php - 如何将所有子目录页面重定向到父目录?

    perl - 文件下载结果在 "IE was not able to open this internet site"

    ubuntu - 在 ubuntu : opus not found using pkg-config 上安装 ffmpeg 时出错