par
naholyr » 24 janv. 2006, 18:14
Roh tu m'as cassé tout mon effet du coup ><
La directive output_buffering :
; Output buffering allows you to send header lines (including cookies) even
; after you send body content, at the price of slowing PHP's output layer a
; bit. You can enable output buffering during runtime by calling the output
; buffering functions. You can also enable output buffering for all files by
; setting this directive to On. If you wish to limit the size of the buffer
; to a certain size - you can use a maximum number of bytes instead of 'On', as
; a value for this directive (e.g., output_buffering=4096).
output_buffering = Off
Quand cette directive n'est pas à "Off", l'output_buffering est automatique. C'est à dire que les entêtes HTTP et le contenu de la page ne sont envoyées que tout à la fin du script. Donc lorsque que tu fais "echo 'bidule';", les entêtes n'ont pas été envoyées, 'bidule' a simplement été ajouté au buffer, et l'appel à une fonction comme session_start() par la suite ne provoque donc pas l'erreur "headers already sent".
Dans ce cas si aucune erreur n'est affiché, c'est simplement parce qu'il n'y en a pas.
Autre conséquence de l'output-buffering : si on fait une terrible erreur de syntaxe ou autre erreur qui tue le script en cours, au lieu d'avoir l'affichage de l'erreur, on aura simplement une page blanche (voire un avertissement du navigateur "le document ne contient aucune donnée").