#22057 [Bgs]: fgets function failure
| From: | elazizli at celiknet dot com | Date: | Wed, 05 Feb 2003 07:25:00 +0000 |
| Subject: | #22057 [Bgs]: fgets function failure | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-32166@lists.php.net to get a copy of this message | ||
ID: 22057
User updated by: elazizli@celiknet.com
Reported By: elazizli@celiknet.com
Status: Bogus
Bug Type: Filesystem function related
PHP Version: 4.3.0
New Comment:
I am well aware of what manual states and how the function works. You
are
saying you get same results from both versions. Which configuration of
server settings you use? Did you try all, so you can be so sure?
I use Apache 1.3.27 on Windows and upgraded from PHP 4.2.3 to 4.3.0
recently
by keeping all settings same and this problem occurred. How would you
explain same function code returns two different responses in
different
versions?
Server: Apache/1.3.27 (Win32) PHP/4.3.0
PHP 4.3.0
response: "fbc" or something similar.
PHP 4.2.3
response: "HTTP/1.1 200 OK"
And also this doesn't happen for all websites I tried. It seems the
function
is having some serious problem with certain server configurations.
This
wasn't the case for 4.2.3.
I hope you are not approaching all bug reports as you did to mine.
Maybe I
should have mentioned my server but still you are approaching with a
prejudice of dealing with a dummy user rather than trying to make sure
the
function works with all platform and distribution versions. You could
have
asked more details rather than putting it into a "dummy user wandering
in
bug pages" case from the first reply.
Previous Comments:
------------------------------------------------------------------------
[2003-02-04 16:17:54] iliaa@php.net
Sorry, but your problem does not imply a bug in PHP itself. For a
list of more appropriate places to ask for help using PHP, please
visit http://www.php.net/support.php as this bug system
is not the
appropriate forum for asking support questions.
Thank you for your interest in PHP.
The manual clearly states that no more then 1 line will be read by
fgets() function. This is not something new, the old code worked in the
exact same manner.
In my tests the outputs of PHP 4.2.3 & 4.3.0 are identical:
PHP 4.2.3
string(17) "HTTP/1.1 200 OK
"
PHP 4.3.0
string(17) "HTTP/1.1 200 OK
"
------------------------------------------------------------------------
[2003-02-04 16:13:43] sniper@php.net
What error? And please give us a complete (but short!) example
script..
------------------------------------------------------------------------
[2003-02-04 15:59:22] elazizli@celiknet.com
PHP manual doesn't tell why this function start to give an error in
version 4.3 while working fine with 4.2.x.
I also tried less efficient ways of getting http headers just for test
purposes and such 3-character long string never appears. That
inefficient method returns same string fgets in 4.2.3 used to return.
PHP manual says the function was modified regarding a fix about
binaries. does that affect the result?
As I say it is not about HTTP or server settings. Same code is not
working with 4.3 although it worked fine with 4.2.3.
Sorry but your answer doesn't help to explain why this error happened
after upgrading to 4.3 while keeping all server and configuration
settings same.
------------------------------------------------------------------------
[2003-02-04 15:39:24] iliaa@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
fgets() will only return a single line of data or the requested number
of bytes, which ever one is smallest will be returned. In case of HTTP,
the 1st line that will be sent to you by the webserver will be the
response code, which in many cases is just a number 3 bytes long.
------------------------------------------------------------------------
[2003-02-04 15:29:19] elazizli@celiknet.com
The following code used to return correct headers for the requested
page whit PHP 4.2.3.. $host, $port and $path variables are dynamically
assigned by the script.
Now it doesn't work without any configuration change other than PHP
upgrade. It returns a three-character string instead of the requested
information. Is this because of the change applied to fgets function in
PHP 4.3? Same code stopped working when migrated to 4.3 from 4.2.3, no
module or configuration change happened during upgrade, same settings
were kept.
$fp = fsockopen($host,$port);
$request =
"GET $path HTTP/1.1
Host: $host$port
Accept: */*
Accept-Charset: iso-8859-1
Accept-Encoding: identity
";
fputs($fp,$request);
$answer = fgets($fp,4096);
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=22057&edit=1