#21496 [Opn->Bgs]: Header weirdness
| From: | edink@php.net | Date: | Tue, 07 Jan 2003 23:42:48 +0000 |
| Subject: | #21496 [Opn->Bgs]: Header weirdness | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-29379@lists.php.net to get a copy of this message | ||
ID: 21496
Updated by: edink@php.net
Reported By: liz@xcalibur.demon.co.uk
-Status: Open
+Status: Bogus
Bug Type: Output Control
Operating System: Linux
PHP Version: 4.3.0
New Comment:
php -q will stop output of all headers, not just default ones. So if
header() works when -q is not specified, this is not a bug.
Previous Comments:
------------------------------------------------------------------------
[2003-01-07 13:24:09] liz@xcalibur.demon.co.uk
It seems this only occurs if you do -q to OVERRIDE the default headers,
eg, print your own rather than say text/html.... it doesnt print any of
them.... none at all! Even though you specifically asked for them. In
4.2 you did -q to suppress default headers but could print your own
------------------------------------------------------------------------
[2003-01-07 13:19:47] liz@xcalibur.demon.co.uk
Oh - I meant to say this is using PHP as CGI, and no this wasnt the CLI
version this was deffinately the CGI one. I checked, a ton of times..
As I suddenly thought.
------------------------------------------------------------------------
[2003-01-07 12:55:03] liz@xcalibur.demon.co.uk
OK, I had the following code:
<?
$counterfile = '/path/afile;
if (file_exists ($counterfile) == true )
{
while (( $fp = fopen ($counterfile,"r+")) == false)
{ usleep(5);}
while (!flock($fp,2))
{ usleep(5); }
$data = fread($fp,filesize($counterfile));
$content=explode(" ",$data);
$content[1]=$content[1]+1;
if (rewind($fp)!=0)
{
$data=implode(" ",$content);
fwrite($fp,$data,strlen($data));
}
flock($fp,3);
fclose($fp);
}
//header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the
past
//header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// always
modified
//header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
//header ("Pragma: no-cache"); // HTTP/1.0
header('Content-disposition: filename=setup.exe');
header('Content-type: application/octetstream');
header('Content-length: '.filesize('/path/setup.exe'));
readfile('/path/setup.exe');
?>
It worked before I upgraded to 4.3, so last version was 4.2 I used.
Now, its not doing the headers, its just showing the results of the
readfile.. (so my users reported major whine when they went to download
my app as I stupidly didnt check that one link)
v4.2 was compiled with
Running PHP 4.2.2
Zend Engine v1.2.0, Copyright (c) 1998-2002 Zend Technologies
[PHP Modules]
xml
standard
sockets
session
posix
pcre
mysql
imap
ftp
dbase
ctype
v4.3 with
[PHP Modules]
Zend Optimizer
ctype
dbase
ftp
imap
mysql
overload
pcre
posix
session
sockets
standard
tokenizer
xml
[Zend Modules]
Zend Optimizer
(Optimizer irrelevant the 4.2 works with or without optimizer, 4.3
produces the same)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=21496&edit=1