Php ou Apache? Le contenu du fichier zip est affiché au lieu de télécharger le fichier zip

J’ai essayé d’écrire un script php pour créer et télécharger un fichier zip. Lorsque j’ai testé le script sur mon hôte local, le téléchargement fonctionne, mais lorsqu’il est téléchargé sur le serveur, tout se passe mal: au lieu de télécharger le fichier zip, le contenu du fichier est affiché dans le navigateur.

Quelqu’un peut-il me diriger dans la bonne direction?

Le code

$zip = new ZipArchive(); $zip->open("$maand/zipfile.zip", ZipArchive::OVERWRITE); $zip->addFile("$maand/ant/a_nb.txt", 'ant.txt'); $zip->addFile("$maand/lim/l_nb.txt", 'lim.txt'); $zip->addFile("$maand/oos/o_nb.txt", 'oos.txt'); $zip->addFile("$maand/vla/v_nb.txt", 'vla.txt'); $zip->addFile("$maand/wes/w_nb.txt", 'wes.txt'); $zip->close(); $filename = "zipfile.zip"; $filepath = "$maand/"; // headers for zip downloads header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: public"); header("Content-type: application/zip"); header("Content-Disposition: attachment; filename=\"".$filename."\""); header("Content-Length: ".filesize($filepath.$filename)); ob_end_flush(); @readfile($filepath.$filename); 

il vous manque ob_start()

Exemple:

  header('Content-Type: application/csv'); header('Content-Disposition: attachement; filename="' . $download . '"'); ob_start(); $str = ''; if(file_exists($file) === true){ $str = file_get_contents($file); } ob_end_clean(); echo $str;