【问题标题】:How to create a directory with php and chmod it to 0777? [duplicate]如何使用 php 创建目录并将其 chmod 为 0777? [复制]
【发布时间】:2018-08-04 14:11:17
【问题描述】:

如何用 php 创建一个目录并将其 chmod 为 0777?我通过PHP搜索了其他与chmod相关的堆栈文章,都是文件相关的,而不是目录...

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, 0777);
        }
    //My guess does not work

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

    return file_put_contents($path, $data);
}

【问题讨论】:

  • mkdir($this->path, 0777);,这是默认值。你真正的问题是什么?什么不工作?
  • 我认为你不需要chmod($this->path, 0777);,因为 mkdir 有默认的第二个参数0777,即默认模式是 0777,这意味着最广泛的访问。我们可以改变它。但在你的情况下,不需要这样做。

标签: php chmod


【解决方案1】:

您必须确保您当前的 Web 服务器用户对您要运行 mkdir 命令的文件夹具有写入权限。如果没有,则不能使用 PHP 的 mkdir 方法。如果您不能创建文件夹,您也不能更改它的所有权。

因此,首先确保您的网络服务器用户具有适当的权限。然后运行上面的代码。

【讨论】:

  • 如果您还详细说明如何找出 Web 服务器用户和目录权限,这将对访问者有所帮助。
  • “什么不工作?”如果目录中没有文件夹,则不会创建一个。如果没有文件夹,则无法写入文件。 ..详细说明如何找出 Web 服务器用户和目录权限。”同意。当我使用 WinSCP chmod 目录时,它会在创建新表单 .json 文件时说所有者是 www-data,它不是任何文件的一部分在我可以看到的系统中。其他所有内容都标记为所有者 root。
  • @dogano 我如何“确保您当前的 Web 服务器用户对该文件夹具有写入权限”?
  • @Federkun “什么不工作?”如果目录中没有文件夹,则不会创建一个。如果没有文件夹则无法写入文件
  • @AhmedNumaan 我就是这么想的……如何找出网络服务器用户和目录权限?
【解决方案2】:

偶然发现: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/

它确实有效。

谢谢:)

【讨论】:

    猜你喜欢
    • 2014-09-29
    • 2011-05-22
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    • 2012-03-14
    相关资源
    最近更新 更多