Reputation: 135
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
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