1

以下代码给了我错误:“mkdir:文件存在”。

    $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) 添加递归性,我不会收到错误,但不会创建目录。我只是不明白我在这里做错了什么。

4

3 回答 3

1

该错误是由路径中的双斜杠引起的,PHP 根本不喜欢。如果你改变它c://c:/一切都会好起来的。

顺便说一句,没有真正的理由将其指定0777为模式,因为这也是默认值。

于 2012-11-05T15:25:29.140 回答
0

假设这是附加了新目录名称$new_location的当前路径。$path您需要将mkdir递归标志设置为 true,以便它Allows the creation of nested directories specified in the pathname.

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

mkdir($new_location, 0777, true);
于 2012-11-05T15:05:03.653 回答
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");
}
于 2012-11-05T15:07:18.460 回答