What are common pitfalls when handling file uploads in PHP, especially in a local environment using XAMPP?

Common pitfalls when handling file uploads in PHP, especially in a local environment using XAMPP, include not setting the correct permissions for the upload directory, not checking the file size and type before uploading, and not validating the uploaded file to prevent security vulnerabilities.

<?php
// Set the correct permissions for the upload directory
$uploadDir = 'uploads/';
if (!file_exists($uploadDir)) {
    mkdir($uploadDir, 0777, true);
}

// Check the file size and type before uploading
$maxFileSize = 5 * 1024 * 1024; // 5MB
$allowedFileTypes = ['jpg', 'jpeg', 'png', 'gif'];
if ($_FILES['file']['size'] > $maxFileSize || !in_array(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION), $allowedFileTypes)) {
    echo 'Invalid file. Please upload a file less than 5MB and of type jpg, jpeg, png, or gif.';
    exit;
}

// Validate the uploaded file to prevent security vulnerabilities
$uploadedFile = $uploadDir . basename($_FILES['file']['name']);
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadedFile)) {
    echo 'File uploaded successfully.';
} else {
    echo 'Failed to upload file.';
}
?>