J'essaie d'afficher un fichier .pdf dans une application PHP. Il fonctionne parfaitement bien sur mon paramétrage de développement local mais en production, le même code affiche le pdf sous forme de texte tronqué.fichier pdf affiche comme texte/html au lieu de l'application/pdf
Ce sont les en-têtes de demande que je utilise:
<?php
$file = $_GET["f"];
$filename = 'contrato.pdf';
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="' .$filename. '"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
readfile($file);
?>
Ce sont les en-têtes de réponse de production selon chrome:
Connection:Keep-Alive
Content-Encoding:gzip
Content-Type:text/html
Date:Mon, 03 Apr 2017 21:31:19 GMT
Keep-Alive:timeout=15, max=189
Server:Apache
Transfer-Encoding:chunked
Vary:Accept-Encoding
Sur la configuration de développement, les en-têtes de réponse sont les suivants:
Accept-Ranges:bytes
Connection:Keep-Alive
Content-Disposition:inline; filename="contrato.pdf"
Content-Transfer-Encoding:binary
Content-Type:application/pdf
Date:Mon, 03 Apr 2017 21:33:44 GMT
Keep-Alive:timeout=5, max=100
Server:Apache/2.4.7 (Win32) PHP/5.5.8
Transfer-Encoding:chunked
X-Powered-By:PHP/5.5.8
Cela peut-il être dû aux paramètres d'apache?
Juste pour vérifier: La sortie brouillées commence par quelque chose comme: '% PDF-1.3'? Vous devez activer le rapport d'erreurs en PHP. Voyez si quelque chose a été envoyé avant d'envoyer vos en-têtes. –
Probablement un proxy ou un serveur le modifiant, ou votre demande de changement d'en-tête est refusée par PHP. Vérifiez vos erreurs: http://stackoverflow.com/q/845021/1255289 – miken32
Oui, ça commence avec quelque chose comme ça. Les erreurs sont sur la production, bonne idée de les allumer pour déboguer cela. –