On Wed, August 17, 2005 10:12 am, Marten Lehmann wrote:
> I have a function catching the output of a script:
>
> function encodeDomain ($domain) {
>          ob_start();
>          system("echo '$domain'");
>          $output = ob_get_contents();
>          ob_end_clean();
> }
>
> And I have a php-script using this function:
>
> <?
>
> encodeDomain($domain);
> header("Location: http://www.php.net";);
>
> ?>
>
> While this worked fine in PHP4, with PHP5.0.4 I always get the
> following
> error:
>
> Warning: Cannot modify header information - headers already sent in
> test.php on line 4

I'm guessing that the error message has MORE information than that --
like the line number of the file in which the output occurred.

I'm also guessing that it's the LAST line of the file with the
"encodeDomain" function in it that you "include" in your test.php

I'm also guessing that there's a NEWLINE character after the final ?>
in that file on your 5.0.4 box, but that NEWLINE character is *NOT*
there on your 4.0 box.

> The redirect works if I don't use the encodeDomain() function. Does
> the
> system-output affect the php-outout status in any way? I checked the
> raw
> http-output and I can see nothing of the output from the
> system()-call.
> Does maybe PHP simply say "output has been send" although it hasn't
> been
> send actually?

Sort of.

Apache may be buffering output, or you may even have output_buffering
set to "on" in php.ini or gzip may be involved and buffering or...

But as far as PHP is concerned, the headers went "out" even if
somebody else somewhere is buffering them and you don't see any
output.

-- 
Like Music?
http://l-i-e.com/artists.htm

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to