当它应该是一个布尔时,Mkdir会发出警告?

时间:2013-03-18 17:40:02

标签: php mkdir

所以php中流行的mkdir()函数会在以下代码中向我发出警告:

public function check_dir($dir, $create_dir = false) {
    if (is_dir ( $dir )) {
        return true;
    } elseif ($create_dir == true) {
        return mkdir ( $dir );
    }

    return false;
}

很容易知道发生了什么。所以我不会解释。但是在mkdir()行上我得到了:

  

警告:mkdir():第70行/var/www/wordpress/wp-content/themes/Aisis-Framework/AisisCore/FileHandling/File.php中的权限被拒绝

因此,虽然它只是一个警告而不是更多,但你永远不应该在现场发出警告,或者出现任何类型的错误。那么当它清楚地表明它返回真或假而不是警告或致命时,我该如何处理呢?

2 个答案:

答案 0 :(得分:0)

您可以建立自定义错误处理程序,这是一般的好习惯:http://www.php.net/set-error-handler

您可以使用它以任何您认为合适的方式处理任何PHP错误。除此之外,你必须关闭错误/警告记录(如你所说,不是一个好的做法),或使用@抑制(一般应该避免,但在这种情况下可能是合适的。)

就我个人而言,我同意返回true / false以指示失败的函数已经不需要在失败时发出警告。但是,那是你的PHP。

答案 1 :(得分:0)

您应该在生产服务器中关闭警告......但更好的是......您可以检查代码中的权限......

function checkDir($dir, $createDir = false) {
    if ($createDir === true) {
        if (is_dir($dir))
            return true;
        $baseDir = dirname($dir);
        if (! is_dir($baseDir) || ! is_writable($baseDir)) {
            return false;
        }
        return mkdir($dir);
    } else {
        return is_dir($dir);
    }
    return false;
}