FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » header() not being honored?
Show: Today's Messages :: Polls :: Message Navigator
Switch to threaded view of this topic Create a new topic Submit Reply
header() not being honored? [message #174792] Fri, 08 July 2011 12:57 Go to next message
Billy Mays is currently offline  Billy Mays
Messages: 4
Registered: July 2011
Karma: 0
Junior Member
I am trying to have php output previously gzipped data, but it seems
like php is ignoring the call altogether.

Code:

#######################################
/* Trying to prevent the chunked encoding */
header('Content-Length: ' . filesize($file) );
header('Content-Encoding: gzip');

readfile($file);

echo "anything";

die();
########################################

It seems that the first call header get completely ignored (I watched
the headers with telnet) and after the readfile() call the the echo is
never used.

Am I misunderstanding how to use the header function? Is there another
way to see whats going on? Unfortunately, I'm in a shared hosting
environment, PHP: 4.4.9

--
Bill
Re: header() not being honored? [message #174793 is a reply to message #174792] Fri, 08 July 2011 18:11 Go to previous messageGo to next message
Jerry Stuckle is currently offline  Jerry Stuckle
Messages: 2598
Registered: September 2010
Karma: 0
Senior Member
On 7/8/2011 8:57 AM, Billy Mays wrote:
> I am trying to have php output previously gzipped data, but it seems
> like php is ignoring the call altogether.
>
> Code:
>
> #######################################
> /* Trying to prevent the chunked encoding */
> header('Content-Length: ' . filesize($file) );
> header('Content-Encoding: gzip');
>
> readfile($file);
>
> echo "anything";
>
> die();
> ########################################
>
> It seems that the first call header get completely ignored (I watched
> the headers with telnet) and after the readfile() call the the echo is
> never used.
>
> Am I misunderstanding how to use the header function? Is there another
> way to see whats going on? Unfortunately, I'm in a shared hosting
> environment, PHP: 4.4.9
>
> --
> Bill

I don't think you can prevent chunking in HTTP 1.1. You would have to
send as HTTP 1.0, which would require a configuration change in the web
server.

And I would suggest you change your hosting immediately. PHP 4.x has
been out of service for years, and if your hosting company is still
running it, I would be afraid of what other old software they're running.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
Re: header() not being honored? [message #174794 is a reply to message #174792] Sat, 09 July 2011 10:25 Go to previous messageGo to next message
crankypuss is currently offline  crankypuss
Messages: 147
Registered: March 2011
Karma: 0
Senior Member
Billy Mays <noway(at)nohow(dot)com> wrote:

> I am trying to have php output previously gzipped data, but it seems
> like php is ignoring the call altogether.
>
> Code:
>
> #######################################
> /* Trying to prevent the chunked encoding */
> header('Content-Length: ' . filesize($file) );
> header('Content-Encoding: gzip');
>
> readfile($file);
>
> echo "anything";
>
> die();
> ########################################
>
> It seems that the first call header get completely ignored (I watched
> the headers with telnet) and after the readfile() call the the echo is
> never used.
>
> Am I misunderstanding how to use the header function? Is there another
> way to see whats going on? Unfortunately, I'm in a shared hosting
> environment, PHP: 4.4.9

First you have to make sure the browser will accept the format you
intend to send. Look in its "accept-encoding" header field to find
out. Note that some browsers fib, I forget which ones, some old
microsoft crap as I recall.

Aside from that it oughtn't be a problem, I have a crappola site that
runs PHP 4.something and does it just fine, uses deflate or gzip and
smooshes a dynamically generated 50k page down into about 2k.

It could well be that PHP is checking accept-encoding and refusing
your content-encoding, or that something else is going on. But it's
definitely possible to send gzip'ed output under older versions of
PHP.

There are some decent writeups on the web about doing this kind of
thing, try keywords "zip page" and like that. As I recall there's an
apache mod that will do it for you (mod_gzip? don't remember), but I
tend to shy away from things of that sort, prefer being able to debug
code rather than ask questions about mods.

--
no aluminum siding offers today
Re: header() not being honored? [message #174795 is a reply to message #174792] Sat, 09 July 2011 13:03 Go to previous messageGo to next message
Andre[1] is currently offline  Andre[1]
Messages: 7
Registered: June 2011
Karma: 0
Junior Member
Le Fri, 08 Jul 2011 08:57:39 -0400, Billy Mays a écrit :

> I am trying to have php output previously gzipped data, but it seems
> like php is ignoring the call altogether.
>
> Code:
>
> ####################################### /* Trying to prevent the chunked
> encoding */ header('Content-Length: ' . filesize($file) );
> header('Content-Encoding: gzip');
>
> readfile($file);
>
> echo "anything";
>
> die();
> ########################################
>
> It seems that the first call header get completely ignored (I watched
> the headers with telnet) and after the readfile() call the the echo is
> never used.
>
> Am I misunderstanding how to use the header function? Is there another
> way to see whats going on? Unfortunately, I'm in a shared hosting
> environment, PHP: 4.4.9

I alreay had the problem.
If you attempt to print anything BEFORE the call to header, it skip.
But any blank line could cause the troube, I had once a blank line in a
'required file', something like:

Debug = 1;

?>

The blank line between debug and ?> shoule also be removed.
I still have trouble in a last script, so if someone has more on this..
Regards
André
Re: header() not being honored? [message #174796 is a reply to message #174795] Sun, 10 July 2011 06:47 Go to previous messageGo to next message
Thomas 'PointedEars'  is currently offline  Thomas 'PointedEars'
Messages: 701
Registered: October 2010
Karma: 0
Senior Member
Andre wrote:

> Le Fri, 08 Jul 2011 08:57:39 -0400, Billy Mays a écrit :
>> Am I misunderstanding how to use the header function? Is there another
>> way to see whats going on? Unfortunately, I'm in a shared hosting
>> environment, PHP: 4.4.9
>
> I alreay had the problem.
> If you attempt to print anything BEFORE the call to header, it skip.

True.

> But any blank line could cause the troube, I had once a blank line in a
> 'required file', something like:
>
> Debug = 1;

AFAIK this is not PHP code.

define('Debug', 1);

or

$Debug = 1;

would be.

> ?>
>
> The blank line between debug and ?> shoule also be removed.

Nonsense. Blank lines in the *generated* output matter, as the response
message body is considered to have started then. What is between `<?php'
and `?>' is not sent to the standard output as-is, but its parsing result
is. The parser ignores all whitespace unless it separates tokens or is
within a string literal (single-quoted, double-quoted, here-doc, or here-
string).

<http://www.php.net/manual/en/tutorial.firstpage.php>

> I still have trouble in a last script, so if someone has more on this..

You need to look *before* `<?php' and *after* `?>' for unwanted whitespace
and Byte Order Marks (BOMs), and *between* those delimiters for *statements*
that *generate* it (an empty line is not). For example, a common mistake is
to store a PHP script encoded in a UTF and attach a BOM (here for UTF-8,
where it is unnecessary and unwise anyway):

<EF><BB><BF><?php
header('...');
?>

A way to find out is

wget -O - http://example.example/index.php > /tmp/out.php
hexedit /tmp/out.php


PointedEars
--
Prototype.js was written by people who don't know javascript for people
who don't know javascript. People who don't know javascript are not
the best source of advice on designing systems that use javascript.
-- Richard Cornford, cljs, <f806at$ail$1$8300dec7(at)news(dot)demon(dot)co(dot)uk>
Re: header() not being honored? [message #174798 is a reply to message #174796] Sun, 10 July 2011 14:18 Go to previous message
Andre[1] is currently offline  Andre[1]
Messages: 7
Registered: June 2011
Karma: 0
Junior Member
Le Sun, 10 Jul 2011 08:47:46 +0200, Thomas 'PointedEars' Lahn a écrit :

> Andre wrote:
>
>> Le Fri, 08 Jul 2011 08:57:39 -0400, Billy Mays a écrit :
>>> Am I misunderstanding how to use the header function? Is there
>>> another way to see whats going on? Unfortunately, I'm in a shared
>>> hosting environment, PHP: 4.4.9
>>
>> I alreay had the problem.
>> If you attempt to print anything BEFORE the call to header, it skip.
>
> True.
>
>> But any blank line could cause the troube, I had once a blank line in a
>> 'required file', something like:
>>
>> Debug = 1;
>
> AFAIK this is not PHP code.
>
> define('Debug', 1);
>
> or
>
> $Debug = 1;
>
> would be.
>
>> ?>
>>
>> The blank line between debug and ?> shoule also be removed.
>
> Nonsense. Blank lines in the *generated* output matter, as the response
> message body is considered to have started then. What is between
> `<?php' and `?>' is not sent to the standard output as-is, but its
> parsing result is. The parser ignores all whitespace unless it
> separates tokens or is within a string literal (single-quoted,
> double-quoted, here-doc, or here- string).
>
> <http://www.php.net/manual/en/tutorial.firstpage.php>
>
>> I still have trouble in a last script, so if someone has more on this..
>
> You need to look *before* `<?php' and *after* `?>' for unwanted
> whitespace and Byte Order Marks (BOMs), and *between* those delimiters
> for *statements* that *generate* it (an empty line is not). For
> example, a common mistake is to store a PHP script encoded in a UTF and
> attach a BOM (here for UTF-8, where it is unnecessary and unwise
> anyway):
>
> <EF><BB><BF><?php
> header('...');
> ?>
>
> A way to find out is
>
> wget -O - http://example.example/index.php > /tmp/out.php hexedit
> /tmp/out.php
>
>
> PointedEars

I just corrected my last problem, and surprising it was a blank line
'BEFORE' the <?php
Now the 'header is well honored.
REgards
André
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: about quality of SAP training videos
Next Topic: Stats comp.lang.php (last 7 days)
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Sat Nov 23 12:38:13 GMT 2024

Total time taken to generate the page: 0.02942 seconds