2013-03-18 38 views
2

所以在PHP中流行的mkdir()函数抛出了我一个警告,在下面的代码: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():权限/var/www/wordpress/wp-content/themes/Aisis-Framework/AisisCore/FileHandling/File.php否认第70行

所以,尽管它只是一个警告而已,但您绝对不应该在现场发出警告或出现任何类型的错误。那么当它清楚地表明它返回真或假而不是警告或致命时,我该如何处理这个问题呢?

+0

你可以写权限到您的服务器?应该修复它 – 2013-03-18 17:43:55

+2

其实,你*应该*关闭“现场”(假设“生活”你的意思是“生产”)的警告。你应该永远不要在*开发*时关闭警告。 – meagar 2013-03-18 17:44:09

+0

也可以将显示的错误/警告消息关闭,并将它们发送到日志文件 – 2013-03-18 17:44:24

回答

0

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

你可以使用这个在你认为合适的任何方式来处理任何PHP错误。不过,你必须要么关闭错误/警告日志记录(如你所说,不是一个好习惯),要么使用@抑制(一般应该避免这种情况,但在这种情况下可能适用。)

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

+0

所以在这种情况下适当的压制警告,因为我已经处理这个返回的错误? – TheWebs 2013-03-18 17:49:09

+0

我会说是的,在这种情况下,使用'@'错误抑制可能是好的。这只是很容易被滥用/滥用的东西,我尽可能地避免它。但在这种情况下,看起来API本身对你起作用,对我来说压制它是有道理的。 – Adrian 2013-03-18 17:51:27

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; 
} 
相关问题