How can PHP developers ensure security when processing file uploads from user input?

When processing file uploads from user input, PHP developers can ensure security by validating the file type, checking the file size, and storing the uploaded files outside the web root directory to prevent direct access. Additionally, using functions like move_uploaded_file() and setting appropriate file permissions can help secure the file upload process.

// Validate file type
$allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];
if (!in_array($_FILES['file']['type'], $allowedTypes)) {
    die('Invalid file type. Only JPEG, PNG, and GIF files are allowed.');
}

// Check file size
$maxFileSize = 1048576; // 1MB
if ($_FILES['file']['size'] > $maxFileSize) {
    die('File is too large. Maximum file size is 1MB.');
}

// Store uploaded file outside web root directory
$uploadDir = '/path/to/uploads/';
$uploadFile = $uploadDir . basename($_FILES['file']['name']);
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadFile)) {
    echo 'File uploaded successfully.';
} else {
    echo 'Error uploading file.';
}