PHP创建目录失败

时间:2015-08-24 08:49:56

标签: php mkdir

我遇到了一些问题,我想为一些图片上传创建一个临时目录。

这就是我所拥有的:

如果我运行root@dev:/var/www/media# tree draft/则返回 draft/ [error opening dir] 目录不存在(并且那是正确的),所以我想要php来创建目录 然后我用这个:

if(!is_dir(MEDIA_PATH . "draft")){
  create_dir(MEDIA_PATH . "draft");
}
if(!is_dir(MEDIA_PATH . "draft/product")){
  create_dir(MEDIA_PATH . "draft/product");
}
if(!is_dir(MEDIA_PATH . "draft/product/" . $temp_id)){
  create_dir(MEDIA_PATH . "draft/product/" . $temp_id);
}
function create_dir($file){
    echo "create_dir: {$file}" . PHP_EOL;
    $dir = dirname($file);
    if(!is_dir($dir)){
        umask(0000);
        if(false === mkdir($dir, 0777, true) && !is_dir($dir)){
            throw new RuntimeException(sprintf("Unable to create the directory (%s).", $dir));
        }
        umask(0022);
    }elseif(!is_writable($dir)){
        throw new RuntimeException(sprintf("Unable to write in the directory (%s).", $dir));
    }
}

https://gist.github.com/keja/840291d1abb7355f07aa

导致

create_dir: /var/www/media/draft
create_dir: /var/www/media/draft/product
create_dir: /var/www/media/draft/product/56d038fe-0906-9442-c2d7-ab2b841467af

然后如果我再次运行树命令

root@dev:/var/www/media# tree draft/
draft/
└── product

由于某种原因,它不会创建最后的目录,任何想法? / var / www / media是一个NFS挂载,但我猜不应该有任何问题。

编辑:问题解决了。

解决方案是删除$dir = dirname($filename);并将$file参数更改为$dir

function create_dir($dir){
    if(!is_dir($dir)){
        umask(0000);
        if(false === mkdir($dir, 0777, true) && !is_dir($dir)){
            throw new RuntimeException(sprintf("Unable to create the directory (%s).", $dir));
        }
        umask(0022);
    }elseif(!is_writable($dir)){
        throw new RuntimeException(sprintf("Unable to write in the directory (%s).", $dir));
    }
}

0 个答案:

没有答案