设置日志目录

时间:2014-04-09 08:04:42

标签: php mkdir dirname

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

//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语句是真的。它不应该是。

2 个答案:

答案 0 :(得分:1)

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

您应该将条件修改为:

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);
    }
}

答案 1 :(得分: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);