【问题标题】:mkdir function not working properlymkdir 功能无法正常工作
【发布时间】:2013-11-06 23:00:15
【问题描述】:

我的文件夹层次结构为 Bucharest/Waterfall/a.php。我在服务器上创建目录的代码 sn-p 如下:

if(!is_dir($this->folder)){  
                $old_umask = umask(0);
                mkdir($this->folder, 0777);  
                umask($old_umask);
                }
                chmod($this->folder, 0777);

            // Moves current file to upload destination
            if(move_uploaded_file($current['tmp_name'],$uploadFile))
                return true;

所有文件都上传到服务器。现在的问题是父文件夹,即Bucharest 的权限为 755,而内部文件夹的权限为 777。$this->folder 的值为 Bucharest/Waterfall。它向布加勒斯特授予 755 许可,而向瀑布授予 777 许可。根据我的代码,777 权限也应该授予布加勒斯特。

我也尝试过 chmod,但都是徒劳的。我想授予父文件夹完全权限。

【问题讨论】:

标签: php


【解决方案1】:

is_dir($this->folder); 告诉您该文件不是目录,而不是它不存在。如果目录已经存在,你当然不能 mkdir。

另外,如果目录已经存在,根据documentation,如果运行php的用户与拥有该目录的用户不同,chmod将不会做任何事情。

【讨论】:

  • 是的,你是对的,但它的路径是布加勒斯特/瀑布,这意味着它将首先创建布加勒斯特然后是瀑布。它向瀑布授予 777 许可,但向布加勒斯特授予 755 许可
  • 如果布加勒斯特已经存在,代码不会做任何事情。此外,如果运行 php 的用户与创建此文件夹的用户不同,它不会对现有目录执行任何操作。
  • 是的,但如果布加勒斯特不存在,那么它将创建布加勒斯特并给予 755 权限
【解决方案2】:

您正在检查的文件夹是否已经是子文件夹?如果是这样,请先创建父文件夹。

mkdir('/tmp/test1/test2/test3/test4');

如果 '/tmp/test1/test2/test3' 不存在会失败

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-21
    • 2017-09-23
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多