【问题标题】:PHPs move_uploaded_file does not respect setgidPHP 的 move_uploaded_file 不尊重 setgid
【发布时间】:2014-08-23 18:27:10
【问题描述】:

我已使用函数 move_uploaded_file 移动已完成的上传。我注意到这不尊重目标目录的 setgid 位并且具有文件最初的内容。 (我了解到这是 Linux 行为)。

什么是解决问题的好方法?我考虑将文件加载到 PHP 中并重新保存,但文件可能非常大 50MB+,这意味着 PHP 需要更多的内存。

【问题讨论】:

  • 您可以尝试使用shell_exec 调用shell 脚本表单php 来调用移动。如果你试图让它成为webservice gid,那么不要做mv,而是在shell脚本中做一个cat并将它写入一个新文件,然后只是unlink旧文件。如果你想要一个不同的,你需要做一个su -,但这可能需要更多的工作。

标签: php file-upload


【解决方案1】:

您可能有权也可能无法访问 system 调用,但只要遵守 setgid 位,system("cp") 甚至明确的 chgrp 可能会做您想做的事。如果现有组因目标目录而异,您可能需要进行一些调查才能获取现有组。

【讨论】:

    【解决方案2】:

    尝试 PHP 内置的 rename 代替 move_uploaded_file()。

    【讨论】:

      【解决方案3】:

      我在 13 年初遇到了这个问题,并通过将 move_uploaded_file 替换为 copy 来修复它。 我不知道实际的性能和内存影响,但这似乎无关紧要。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-09
        • 1970-01-01
        • 1970-01-01
        • 2016-10-01
        • 2019-04-09
        • 2011-03-28
        • 1970-01-01
        • 2016-09-19
        相关资源
        最近更新 更多