PHP mkdir()函数-如果文件夹存在
可能重复:PHP mkdir()函数-如果文件夹存在,php,forms,Php,Forms,可能重复: 我有一个基于表单创建文件夹的PHP脚本。我想知道如果文件夹已经存在,是否有办法不创建和替换它 <?php mkdir("QuickLinks/$_POST[contractno]"); ?> 您可以查看: 您可以使用: 一般来说: $dirname = "whatever"; if (!is_dir($dirname)) { mkdir($dirname); } 特别是:在执行涉及用户输入的文件系统(或任何其他类型的敏感)操作时要非常小心!当前的示例(创
我有一个基于表单创建文件夹的PHP脚本。我想知道如果文件夹已经存在,是否有办法不创建和替换它
<?php
mkdir("QuickLinks/$_POST[contractno]");
?>
您可以查看: 您可以使用:
一般来说:
$dirname = "whatever";
if (!is_dir($dirname)) {
mkdir($dirname);
}
特别是:在执行涉及用户输入的文件系统(或任何其他类型的敏感)操作时要非常小心!当前的示例(创建目录)没有留下太多开放的攻击面,但验证输入永远不会有什么坏处。使用PHP的is_dir函数检查是否已经有目录,只有在没有目录时才调用mkdir函数。您可以尝试:
<?php
if (!is_dir("QuickLinks/$_POST[contractno]"))
mkdir("QuickLinks/$_POST[contractno]");
?>
在使用POST变量创建目录之前,在此处执行一些验证规则(regexp)
if(!file_exists("QuickLinks/$_POST[contractno]"))
mkdir("QuickLinks/$_POST[contractno]");
用于检查文件夹是否存在
$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));
}
}
注意不受控制的输入,这是非常危险的 文件_exists不区分文件和目录,因此使用您正在查找的名称的文件将生成假true。is_dir检查它是否存在以及它是否是directory@hellsgate:在这种情况下,哪种方法更好。如果存在同名的文件或命名套接字,则无法创建目录。因此,
is_dir
听起来更准确,但可能导致误报和其他错误。纯属虚构。但是应该为现有的文件和目录调用回退代码。@mario:好的。对于这种情况,我现在意识到文件_exists是更好的选择,因为您列出了一些原因。您到底想实现什么?您的程序是做什么的?该程序根据表单的输入创建一个文件夹,然后将模板文件夹复制到新文件夹中。我想知道是否还有一种方法可以告诉脚本文件夹是否已经存在;不要复制任何东西?这是一个内部项目,需要密码才能访问网页。这似乎奏效了。有没有办法复制文件夹?如果文件夹已经存在,那么不要复制任何内容?是的,这应该可以:
。如果shell_exec()函数有问题,请使用受主题启发的其他复制函数替换它。
$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));
}
}