Are there any best practices or guidelines for managing file uploads in PHP to ensure smooth functionality?

When managing file uploads in PHP, it is important to ensure that the server has enough memory and upload limits set to accommodate the file sizes being uploaded. It is also crucial to validate file types and sanitize file names to prevent security vulnerabilities.

// Set maximum file size and allowed file types
$maxFileSize = 10 * 1024 * 1024; // 10 MB
$allowedFileTypes = ['jpg', 'jpeg', 'png', 'gif'];

// Validate file size and type
if ($_FILES['file']['size'] > $maxFileSize) {
    die('File size is too large.');
}

$ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
if (!in_array($ext, $allowedFileTypes)) {
    die('Invalid file type.');
}

// Sanitize file name
$fileName = preg_replace("/[^A-Za-z0-9.]/", '', $_FILES['file']['name']);

// Move uploaded file to desired directory
$uploadDir = 'uploads/';
$uploadPath = $uploadDir . $fileName;

if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadPath)) {
    echo 'File uploaded successfully.';
} else {
    echo 'Error uploading file.';
}