【问题标题】:PHP: Apply Chmod during UnarchivingPHP:在取消归档期间应用 Chmod
【发布时间】:2012-05-11 12:46:33
【问题描述】:

这是我到目前为止所得到的。我需要能够将 0666 应用于存档中的所有文件。我不能在出口时这样做吗?在解压期间或解压后更改 chmod 的示例代码是什么?

$zip = new ZipArchive;
if ($zip->open('upload/'. $username . $file_ext) === TRUE) {
$zip->extractTo('dir/' . $username);
$zip->close();
} else {
echo 'failed';
}

感谢大家的帮助! 布兰登

【问题讨论】:

    标签: php upload zip archive chmod


    【解决方案1】:

    在目录上设置 0666 可能不是您想要的 ;-)

    Linux 中任何进程中的文件创建都将使用0777 用于目录,0666 用于文件这取决于umask 值最终权限是什么。默认情况下,umask 的值是 0022,它会创建像 0644 这样的文件;它就像减法一样。

    因此,通过将umask 重置为 0,您可能会得到所需的内容。

    umask(0);
    $zip = new ZipArchive;
    if ($zip->open('upload/'. $username . $file_ext) === TRUE) {
        $zip->extractTo('dir/' . $username);
        $zip->close();
    } else {
        echo 'failed';
    }
    

    【讨论】:

    • 我补充说,在取消归档脚本之前,服务器上的权限是 sill 0604。我将它与 API 一起使用,所以我需要授予它访问权限以将文件传输到他们的服务...
    • 我应该试试 umask(111);或类似的东西?
    • 如果umask(0) 不起作用,那么更改该值将没有多大意义。我的机器上没有zip 扩展名(因为它不会编译),所以我只通过简单的touch('testfile') 对其进行了测试,并且在更改umask 时表现正常。
    • 管理编译 zip 扩展名,我的建议是更改提取权限。更新了我的答案以反映对我有用的代码。
    • 我就是这么做的。但由于某种原因,它不起作用。但是,我发现我使用 chmod() 错误。我有 chmod(dir/dir) 而不是 chmod(/dir/dir) :)
    猜你喜欢
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    相关资源
    最近更新 更多