mkdir,file_exists:令人困惑和矛盾的错误

时间:2012-11-05 14:56:55

标签: php mkdir file-exists

以下代码给出了错误:“mkdir:file exists”。

    $path = 'c://wamp/www/et1/other';
    $new_location = 'c://wamp/www/et1/other/test';
    if(file_exists($path) && is_dir($path))
    {
        if(!file_exists($new_location))
        {               
            mkdir($new_location, 0777);
        }
    }

但是,如果我没有放第二个if条件,它会给我错误:“mkdir:没有这样的文件或目录”。此外,如果我通过写mkdir($ new_location,077,true)来添加递归,我不会得到错误,但是没有创建目录。我只是不明白我在这里做错了什么。

3 个答案:

答案 0 :(得分:1)

错误是由路径中的双斜线引起的,PHP根本不喜欢它。如果您将c://更改为c:/,那么一切正常。

顺便说一下,没有理由将0777指定为模式,因为这也是默认模式。

答案 1 :(得分:0)

假设$new_location是附加了新目录名的当前路径$path。将递归标志设置为true,mkdir

http://php.net/manual/en/function.mkdir.php

Allows the creation of nested directories specified in the pathname.

答案 2 :(得分:0)

错误是自我解释的

Warning: mkdir() [function.mkdir]: No such file or directory in

这意味着父目录不存在..您需要添加递归选项以创建parent directory然后current directory

  mkdir($new_location, 0777, true);

如果您不想这样做,请始终检查父目录是否存在

if (!is_dir(dirname($new_location)) || !is_writable(dirname($new_location)))
{
    trigger_error("Your parent does not exist");
}