$allowed_ext = ['jpg','jpeg','png','gif','gıf'];
    $allowed_mimes = ['image/jpeg','image/png','image/gif'];

    $ext_explode = explode('.',$file['name']);
    $uzanti = strtolower(array_pop($ext_explode));
    $mime = mime_content_type($file['tmp_name']);

    if(!in_array($uzanti,$allowed_ext) || !in_array($mime,$allowed_mimes)){
        echo 'hata'
        die;
    }
en basit haliyle bu şekilde yapabilirsiniz.

ayrıca $_FILES['file']['type']; kullanmayın. txt dosyasının sadece uzantısını değiştirip .png yaptığınızda da image/png döner. örnek olarak; shell.php dosyasını kötü niyetli kullanıcı shell.png yapar yükler, sonra yüklenen dosyayı çalıştırır sonuçları kötü olur.
mime_content_type kullanın. bu gibi durumlarda kesin sonuç verir. uzantı farklı içerik farklı olsa da doğru sonucu döner