Fixing rotated image uploads In PHP

function generateRandomString($length = 10) 
{
  $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  $randomString = '';
  
  for ($i = 0; $i < $length; $i++) {
    $randomString .= $characters[rand(0, strlen($characters) - 1)];
  }

  return $randomString . '.jpg';
}

if(isset($_FILES["studentProfile"]))
{
  $uploadDir = '../../vendor/img/students/';
  $fileName = $_FILES['studentProfile']['name'];
  $fileTmpName = $_FILES['studentProfile']['tmp_name'];
  $fileType = $_FILES['studentProfile']['type'];
  
  if ($_FILES['studentProfile']['error'] === UPLOAD_ERR_NO_FILE)
  {
    if($stuGender === "male")
    {
      $StuImgId = "male.jpg";
    } 
    elseif($stuGender === "female")
    {
      $StuImgId = "female.jpg";
    } 
    else
    {
      $StuImgId = "default.jpg";
    }
  } 
  else 
  {
    $allowedTypes = ['image/jpeg', 'image/png'];
    
    if (!in_array($fileType, $allowedTypes)) 
    {
      $message = "Error: Only JPG or PNG files are allowed.";
      exit;
    }

    if ($fileType == 'image/png') 
    {
      $source = imagecreatefrompng($fileTmpName);
      $fileName = $uploadDir . generateRandomString();
      imagejpeg($source, $fileName);
      imagedestroy($source);
    } 
    else 
    {
      $fileName = $uploadDir . generateRandomString();
      move_uploaded_file($fileTmpName, $fileName);
    }

    $newWidth = 413;
    $newHeight = 531;
    list($width, $height) = getimagesize($fileName);
    $imageResized = imagecreatetruecolor($newWidth, $newHeight);
    $source = imagecreatefromjpeg($fileName);
    imagecopyresized($imageResized, $source, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
    imagejpeg($imageResized, $fileName);
    imagedestroy($source);
    imagedestroy($imageResized);
    $compressionQuality = 75;
    $source = imagecreatefromjpeg($fileName);
    imagejpeg($source, $fileName, $compressionQuality);
    imagedestroy($source);
    $upath = parse_url($fileName, PHP_URL_PATH);
    $StuImgId = basename($upath); 
  }
}

When I upload this code using type=file everything is working properly except that the image is rotated, like this:

enter image description here

Can anyone suggest how to fix this issue? Specifically it is happening when I upload large size photos.