What are the best practices for handling file uploads and restrictions in a shared hosting environment?

When handling file uploads and restrictions in a shared hosting environment, it is important to set limitations on file size, file type, and storage space to prevent abuse and ensure server stability. Additionally, implementing proper error handling and validation checks can help protect against security vulnerabilities and potential attacks.

// Set maximum file size limit to 5MB
$maxFileSize = 5 * 1024 * 1024; // 5MB in bytes

// Allowed file types
$allowedFileTypes = ['jpg', 'jpeg', 'png', 'gif'];

// Set upload directory
$uploadDir = 'uploads/';

// Check if file size is within limit
if ($_FILES['file']['size'] > $maxFileSize) {
    die('File size exceeds limit.');
}

// Check if file type is allowed
$fileExtension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
if (!in_array($fileExtension, $allowedFileTypes)) {
    die('File type not allowed.');
}

// Move uploaded file to designated directory
$uploadFile = $uploadDir . basename($_FILES['file']['name']);
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadFile)) {
    echo 'File uploaded successfully.';
} else {
    echo 'Error uploading file.';
}