You have two entries for Content-Disposition:
Try the first one...it's worked with another script I've used.
Also, try changing the content type to Content-type: application/octetstream);
This code works for me (different variable names naturally)
header('Content-type: application/octetstream');
header('Content-Length: ' . filesize("./storage/".$validdownload[0]));
header('Content-Disposition: attachment; filename="'.$validdownload[1].'"');
readfile("./storage/".$validdownload[0]);
no die(); or return is used in this case