How can PHP be used to handle file uploads and process them securely without exposing the server to vulnerabilities?

When handling file uploads in PHP, it is important to validate and sanitize the uploaded files to prevent vulnerabilities such as file injection attacks. One way to securely handle file uploads is to use PHP's built-in functions like `move_uploaded_file()` to move the uploaded file to a designated directory outside of the web root. Additionally, always validate the file type and size before processing it.

// Check if the file was uploaded without errors
if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
    $uploadDir = '/path/to/uploads/';
    
    // Validate file type and size
    $allowedTypes = ['image/jpeg', 'image/png'];
    $maxFileSize = 2 * 1024 * 1024; // 2MB
    
    if (in_array($_FILES['file']['type'], $allowedTypes) && $_FILES['file']['size'] <= $maxFileSize) {
        $uploadPath = $uploadDir . basename($_FILES['file']['name']);
        
        // Move the uploaded file to the designated directory
        if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadPath)) {
            echo 'File uploaded successfully.';
        } else {
            echo 'Failed to upload file.';
        }
    } else {
        echo 'Invalid file type or size.';
    }
} else {
    echo 'Error uploading file.';
}