0

如果还没有创建一个,我想创建一个新文件夹。为了做到这一点,我写道:

//Set up the log directory

if(is_dir(dirname(LOG_PATH))) {

} else {
    mkdir(LOG_PATH, 0777, true);
    echo "Directory created. ". LOG_PATH ."<br />";
}

LOG_PATH = E:\xampp\htdocs\photo\logs\

有一个照片文件夹,但没有日志文件夹(我想创建那个文件夹)。

我错过了什么吗,因为这里的 if 语句是正确的。不应该。

4

2 回答 2

1

dirname(LOG_PATH)LOG_PATH返回( )的父级E:\xampp\htdocs\photo,因此当文件夹存在时,您的if语句为真photo,而不是在logs文件夹存在时。

您应该将条件修改为:

if (is_dir(LOG_PATH)) {

} else {
    mkdir(LOG_PATH, 0777, true);
    echo "Directory created. ". LOG_PATH ."<br />";
}

而且,如果您将第一个分支留空,只需否定条件:

if (!is_dir(LOG_PATH)) {
    mkdir(LOG_PATH, 0777, true);
    echo "Directory created. ". LOG_PATH ."<br />";
}

顺便说一句,mkdir如果您无权在此处创建新文件夹,则调用可能会失败,因此您应该检查是否失败:

if (!is_dir(LOG_PATH)) {
    if (mkdir(LOG_PATH, 0777, true)) {
        echo "Directory created. ". LOG_PATH ."<br />";
    } else {
        throw new Exception("Can't create folder " . LOG_PATH);
    }
}
于 2014-04-09T08:20:46.917 回答
0

当路径包含正斜杠时,“mkdir”函数在 Windows 上无法正常运行。没有创建带有正斜杠的路径部分。

mkdir('c:/a/b/c/d', 0775, true);

您收到错误消息:警告:mkdir() [function.mkdir]:没有这样的文件或目录

请在 Windows 下使用反斜杠或使用常量 DIRECTORY_SEPARATOR。

mkdir('c:\a\b\c\d', 0775, true); mkdir('c:'.DIRECTORY_SEPARATOR.'a'.DIRECTORY_SEPARATOR.'b'.DIRECTORY_SEPARATOR.'c'.DIRECTORY_SEPARATOR.'d', 0775, true);

于 2014-04-09T08:13:31.490 回答