【问题标题】:How to chmod 0007 a lot of directories with php? [duplicate]如何用 php chmod 0007 很多目录? [复制]
【发布时间】:2018-08-03 07:43:31
【问题描述】:

我的网站将包含数千个名为“e”的子目录,用于保存用户创建的特定于该目录提交表单的 .json 文件。我需要这个新创建的目录是 chmod 0007。我该怎么做?

下面的代码来自一个 php 文件,用于在文件夹“e”中进行本地存储的全局存储功能,但它仅在该文件夹已经存在并且已经 chmod 0007 时才有效:

public function store(Document $document) {
    if (!isset($document->id)) { $document->id = $this->generateId(); }

        //This is my guess how to do it..
        $this->path      = $this->path . DIRECTORY_SEPARATOR
        if (!file_exists($this->path)) {
            mkdir($this->path);
            chmod($this->path, 0007);
        }
    //My guess does not work

    $path    = $this->getPathForDocument($document->id);
    $data    = $this->formatter->encode((array) $document);

    return file_put_contents($path, $data);
}

注意:我已经通过 PHP 搜索了与 chmod 相关的其他堆栈文章,所有文章都与文件相关,而不是目录,和/或迄今为止没有一个足够清楚以帮助我。请仅链接到专门回答这个确切问题的内容。

注意:这不是哪个 chmod 最好的问题。感谢您对 chmod #### 的关注,稍后我会考虑这些问题。请专注于问题的答案,而不是一个困扰您的细节,而不是回答。

【问题讨论】:

  • 0007?您确定吗?你能解释一下为什么0007吗?
  • 也许他对 Bond 参数感到困惑...... *badum tssssss*
  • 请注意mkdir的第二个参数持有该目录的文件权限

标签: php apache chmod


【解决方案1】:
foreach(['./users','./mp3','./pdf'] as $path){
    array_map(function ($val){
        return shell_exec ("chmod 0777 $val");
    }, glob("$path/*"));
}

【讨论】:

  • 您能否解释或提供完整的解决方案,说明如何在上面发布的代码中使用它来修改目录的 chmod,因为它创建它。
  • 请帮忙.....
【解决方案2】:

偶然发现:PHP mkdir:PHP mkdir: Permission denied problem

他们建议这样做:chown -R www-data:www-data /var/www/example.com/public_html/ chmod -R g+rw /var/www/example.com/public_html/

它确实有效。

谢谢:)

【讨论】:

    猜你喜欢
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 2013-04-09
    相关资源
    最近更新 更多