Are there any potential security risks to consider when allowing file uploads in a PHP CMS?

One potential security risk to consider when allowing file uploads in a PHP CMS is the possibility of malicious files being uploaded, which can lead to security vulnerabilities such as code execution or file inclusion attacks. To mitigate this risk, it is important to validate file types, limit file sizes, and store uploaded files outside of the web root directory.

// Validate file type and limit file size
$allowedFileTypes = ['jpg', 'jpeg', 'png', 'gif'];
$maxFileSize = 5 * 1024 * 1024; // 5MB

if (in_array(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION), $allowedFileTypes) && $_FILES['file']['size'] <= $maxFileSize) {
    // Move uploaded file to a secure directory
    move_uploaded_file($_FILES['file']['tmp_name'], '/path/to/uploads/' . $_FILES['file']['name']);
} else {
    echo 'Invalid file type or file size exceeds limit.';
}