如果还没有创建新文件夹,我想创建一个新文件夹。为了做到这一点,我写道:
//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:\examplep\htdocs\photo\logs\
有一个照片文件夹,但没有日志文件夹(我想创建那个文件夹)。
我是不是遗漏了什么,因为这里的if语句是真的。不应该是。
dirname(LOG_PATH)
返回LOG_PATH
(E:xampphtdocsphoto
)的父级,因此当photo
文件夹存在时,if
语句为true,而当logs
文件夹存在时为true。
您应该将条件修改为:
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);
}
}
当路径包含正斜杠。带有正向斜杠的路径部分没有创建。
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);