Reputation: 19225
I have the following code in a PHP file called via Ajax (note - the code is a stripepd down version of the actual code, but still produces an error:
<?php
session_start();
$response = array(
'status'=>'abc',
'a'=>'abc',
'b'=>'abc',
'c'=>'abc'
);
header('X-JSON: '.json_encode($response));
exit;
?>
There are absolutely no spaces or anything before the opening
Yet when I call the script I get:
'[11-Aug-2009 14:56:13] PHP Notice: A session had already been started - ignoring session_start() in \test\action.php on line 2
[11-Aug-2009 14:56:13] PHP Warning: Cannot modify header information - headers already sent by (output started at \test\action.php:2) in \test\action.php on line 10'
Line 2 is the session_start() command and line 10 is the header() command.
So PHP is telling me that it has ignored the session_start, and then immediately telling me that actually that line produced output....whats going on?
Upvotes: 0
Views: 418
Reputation: 2413
Check if there's this annoying little bugger called BOM (Byte Order Mark) creeping in your file. It's possible if you've encoded that file as utf-8, and you can catch it with firebug for example.
Upvotes: 0
Reputation: 53607
Well, believe it or not, the criminal output is......
'[11-Aug-2009 14:56:13] PHP Notice: A session had already been started - ignoring session_start() in \test\action.php on line 2
Either suppress error messages (bad idea in development) Or find where you started the session (which is really how you need to solve this)
Upvotes: 2