Otwarcie pobranego pliku zip tworzy plik cpgz?

Jeśli zrobię adres URL pliku zip,href linku i kliknij łącze, mój plik zip zostanie pobrany i otworzony otrzyma zawartość zgodnie z oczekiwaniami.

Oto ten HTML:

<a href="http://mysite.com/uploads/my-archive.zip">download zip</a>

Problem polega na tym, że chciałbym, aby link wskazywał na moją aplikację, dzięki czemu mogłem określić, czy użytkownik jest upoważniony do dostępu do tego pliku zip.

więc chciałbym, aby mój HTML był taki:

 <a href="/canDownload">download zip</a> 

i mój PHP dla/canDownload&nbsp;strona:

//business logic to determine if user can download

if($yesCanDownload){

$archive='https://mysite.com/uploads/my-archive.zip';
header("Content-Type: application/zip");
header("Content-Disposition: attachment; filename=".basename($archive));
header("Content-Length: ".filesize($archive));
ob_clean();
flush();
echo readfile("$archive");
}   

Myślę, że problem ma związek zheader()&nbsp;kod, ale wypróbowałem kilka rzeczy związanych z tym opartych na różnych google i innych sugestiach SO i żadna nie działa.

Jeśli odpowiesz na moje pytanie, prawdopodobnie odpowiesz również na to pytanie:Plik zip z wynikami PHP w pliku cpgz po wyodrębnieniu