Warning: mkdir(): File exists [closed]
The file transferring to my upload folder is working well but I have a warning in mkdir. It says file exist but the picture and folder generates own name. I don't know what warning is determining.
include 'connect.php';
$dir = substr(uniqid(), -7); // Uniqid for subdirectory
$path = "uploads/$dir/"; // uploads/subdirectory/ // Make directory
$valid_formats = array("jpg", "png", "jpeg", "kml");
$max_file_size = 2097152;
$count = 0;
// Loop $_FILES to execute all files
if (!empty($_FILES)) {
foreach ($_FILES['files']['name'] as $f => $name) {
if ($_FILES['files']['error'][$f] == 4) {
continue; // Skip file if any error found
}
if ($_FILES['files']['error'][$f] == 0) {
if ($_FILES['files']['size'][$f] > $max_file_size) {
$message[] = "$name is too large!.";
continue; // Skip large files
} elseif (!in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats)) {
$message[] = "$name is not a valid format";
continue; // Skip invalid file formats
} else { // No error found! Move uploaded files
mkdir($path, 0700);
$ext = pathinfo($_FILES['files']['name'][$f], PATHINFO_EXTENSION);
$uniq_name = substr(uniqid(), -5) . '.' . $ext;
$dest = $path . $uniq_name;
if (move_uploaded_file($_FILES["files"]["tmp_name"][$f], $dest)) {
// more logic
}
}
}
}
}
Solution 1:
Warning is quite clear, you are creating directory which already exists. So, just change it to
if (!file_exists($path)) {
mkdir($path, 0700);
}
Solution 2:
Use PHP's is_dir($path_to_dir)
for checking if a directory exists from before.
Official documentation