OVH Community, votre nouvel espace communautaire.

Modification de headers en PHP ne fonctionne pas


NouveauEnVille
29/06/2014, 12h38
Ce sont de très bonnes remarques de la part de pl.lamballais, j'espère que nombreux sont ceux qui les liront avant de poster...

Sinon, au passage, je me demande comment vous développez vos sites en PHP, j'ai l'impression que beaucoup font ça en live sur le serveur/hébergement?! Parce que l'histoire des warnings qui ne sont pas activés, ... Il faut développer/tester les scripts d'abord sur son ordi avec tous les warnings activé dans PHP, en local, avant de les installer sur un serveur. Ça coule de source.

pl.lamballais
08/06/2014, 23h49
Bonjour,

Au dela du fait qu'il manquait le $, il y a un truc auquel il faut faire super attention avec les "header". Si on est bien d'accord sur le fait qu'il ne faut rien envoyer AVANT de demander la génération du header, on a parfois des erreurs du genre "quelque chose a déjà été envoyé" alors qu'on a "à priori" rien envoyé.
Or, il suffit d'avoir un retour à la ligne avant un tag d'ouverture PHP d'un fichier inclus, ou un retour après le tag de fermeture pour que ce soit envoyé au serveur et le header ne fonctionne plus.

A noter aussi que si tu mets le niveau de "warning" à un niveau assez élevé, PHP t'indique quand des variables sont pas "correct". Il t'aurait donc prévenu concernant le manque de $ devant "expire_min".

Amitiés
FL

NouveauEnVille
23/05/2014, 00h37
Ce sont des choses qui arrivent

yadol
22/05/2014, 12h26
en fait cela fonctionne, j'avais oublié le $ devant $expire_min

yadol
22/05/2014, 11h53
Bonjour,

J'essaye d'activer le cache HTTP lors de l'envoi d'une réponse en utilisant la fonction header() de PHP. Dans les réponses retournées, je vois que quoi que je fasse, mes headers ne sont pas présents (ou présents avec d'autres valeurs). Bref, quelque chose entre PHP et la sortie d'Apache soit écrase soit ne tient pas compte de mes headers.

Mon code ressemble à ça :

Code PHP:
    $expire_min 60/* 1 hour */
    
$now time( );
    
$then gmstrftime("%a, %d %b %Y %H:%M:%S GMT"$now 60*expire_min);
    
header_remove("Pragma");
    
header("Expires:".$then);
    
header("Cache-Control: max-age=".strval(60*expire_min));
    (...) 
    echo 
$output
    exit();
?>
Est-ce que je dois faire quelque chose dans ma config OVH (mutualisé) pour que ça fonctionne ?