PHP mkdir()函数 - 如果文件夹存在

时间:2012-07-12 15:10:32

标签: php forms

  

可能重复:
  PHP uploading script - create folder automatically

我有一个PHP脚本,可以根据表单创建一个文件夹。我想知道是否有一种方法可以创建并替换该文件夹(如果它已经存在)?

<?php 
mkdir("QuickLinks/$_POST[contractno]");
?>

7 个答案:

答案 0 :(得分:16)

您可以使用is_dir

<?php 
$path = "QuickLinks/$_POST[contractno]";
if(!is_dir($path)){
  mkdir($path);
}
?>

答案 1 :(得分:3)

一般来说:

$dirname = "whatever";
if (!is_dir($dirname)) {
    mkdir($dirname);
}

特别是:在进行涉及用户输入的文件系统(或任何其他类型的敏感)操作时要非常小心!当前的示例(创建一个目录)并没有留下大量的开放攻击面,但验证输入永远不会受到伤害。

答案 2 :(得分:3)

使用is_dir检查文件夹是否存在

$dir = "/my/path/to/dir";
if (!is_dir($dir)) {
    if (false === @mkdir($dir, 0777, true)) {
        throw new \RuntimeException(sprintf('Unable to create the %s directory', $dir));
    }
}

注意不受控制的输入,这是非常危险的!

答案 3 :(得分:2)

您可以尝试:

<?php 
    if (!is_dir("QuickLinks/$_POST[contractno]"))
        mkdir("QuickLinks/$_POST[contractno]");
?>

答案 4 :(得分:1)

答案 5 :(得分:1)

使用PHP的is_dir-function来检查是否已有目录,只有在没有目录时才调用mkdir-function。

答案 6 :(得分:0)

在使用POST变量创建目录之前,请先执行一些验证规则(regexp)!

if(!file_exists("QuickLinks/$_POST[contractno]"))
    mkdir("QuickLinks/$_POST[contractno]");