pauljwilliams
pauljwilliams

Reputation: 19225

session_start() followed by header() causing error

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

Answers (4)

JHollanti
JHollanti

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

Alix Axel
Alix Axel

Reputation: 154603

Use ob_start();

Upvotes: -1

Itay Moav -Malimovka
Itay Moav -Malimovka

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

graham.reeds
graham.reeds

Reputation: 16476

It may be related to this question of mine.

Upvotes: 0

Related Questions