Will Yun
Will Yun

Reputation: 135

PHP when output something before header or session_start without ob_start

I have been told when output something like echo/var_dump before header() or session_start, a warning will be shown like this "php Cannot send session cookie-headers already sent by".

But the following code works fine. It is strange! Who can tell me the reason? PHP version is 5.6.9

<?php 
echo 'hello';
setcookie('a','a');
session_start();
$_SESSION['a'] = 'a';
header("location:test.php");
?>

Upvotes: 0

Views: 992

Answers (1)

eol
eol

Reputation: 24555

If you use output_buffering = On in your php.ini you can send cookies after the headers have been sent.

As stated in php.ini comment :

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).

Upvotes: 2

Related Questions