#22810 [Bgs]: Incorrectly writes out data.
| From: | gfraley5 at earthlink dot net | Date: | Wed, 26 Mar 2003 01:20:20 +0000 |
| Subject: | #22810 [Bgs]: Incorrectly writes out data. | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-36439@lists.php.net to get a copy of this message | ||
ID: 22810
User updated by: gfraley5 at earthlink dot net
Reported By: gfraley5 at earthlink dot net
Status: Bogus
Bug Type: Filesystem function related
Operating System: Windows XP
PHP Version: 4.3.2RC2
New Comment:
Something is drasticly wrong under Windows XP with the latest CVS.
When I run your php code (or mine) in my real application, it hard
crashes Apache 100% of the time. When I restore to PHP 4.3.1, Apache
does not crash but your code will not work correctly. it makes the
entries, other than prefx, one large csv file instead of adding the \n
characters. That's why it has to loop. In any event, I believe there
is still a problem with the filesystem code somewhere.
Previous Comments:
------------------------------------------------------------------------
[2003-03-25 19:06:53] gfraley5 at earthlink dot net
I just downloaded the latest CVS and tried my application under it.
Now, something between my php code, Apache, and this latest CVS is
causing Apache.exe to crash.
------------------------------------------------------------------------
[2003-03-25 18:07:22] gfraley5 at earthlink dot net
Thank you for correcting the snippet I tried to put together to
minimize the amount of code to submit the bug. However, in my full
code the error is there and my code works fine in all previous releases
back to 4.1. I am not arguing with you, just stating a fact. I will
try to redefine the error/bug. I am curious, however, as to why the
code runs correctly under 4.3.1?
------------------------------------------------------------------------
[2003-03-25 17:50: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
Your code has a bug, I've revised your code and now the output is
identical to the input. It should be noted that even before any
modifications the generated output was indetical to the one of PHP
4.2.3
Here is the revised write code:
$fp = fopen("out",'w') or die("Problem");
$prefx = "<? Header(\"HTTP/1.0 403 Forbidden\");exit; ?>\n";
$csv_out = implode(',', $gcf);
fwrite($fp,$prefx.$csv_out);
fclose($fp);
------------------------------------------------------------------------
[2003-03-21 10:36:43] gfraley5 at earthlink dot net
I have also tested it under the latest CVS and the problem is there
also.
------------------------------------------------------------------------
[2003-03-20 20:23:39] gfraley5 at earthlink dot net
The following code works correctly on 4.3.1 (and prior) but does not
appear to work correctly on 4.3.2RC1. I have only tested this on
Windows XP.
<?
$fp = fopen("php432.csv.php",'r') or die("Problem");
while ($data = fgetcsv($fp,1024,",")) {
$row++;
if ($row<1) continue;
$gcf = $data;
}
fclose($fp);
$fp = fopen("php432.csv.php",'w') or die("Problem");
flock($fp,2);
for ($i=0;$i<count($gcf);$i++) {
if ($i==0) $prefx = "<? Header(\"HTTP/1.0 403 Forbidden\");exit;
?>\n";
else $prefx = "";
fwrite($fp,$prefx.$gcf[$i].',');
if ($i<count($gcf)-1) fwrite($fp,',');
}
flock($fp,3);
fclose($fp);
?>
Here is a simple example of the file that is read in (php432.csv.php):
<? Header("HTTP/1.0 403 Forbidden");exit; ?>
1043203275,localhost,2003-01-21,20:41:15,Anonymous,,,,,,,,blank,Test,,
When run under 4.3.1, it correctly writes out
<? Header("HTTP/1.0 403 Forbidden");exit; ?>
1043203275,localhost,2003-01-21,20:41:15,Anonymous,,,,,,,,blank,Test,,
However, under 4.3.2RC1, it truncates the last digit (5) from the first
field. It writes out
<? Header("HTTP/1.0 403 Forbidden");exit; ?>
104320327,localhost,2003-01-21,20:41:15,Anonymous,,,,,,,,blank,Test,,
There is other erratic behavior also. If I modify the code to include
a header row in line 2, and modify the code accordingly, it will skip
the first comma separator like this:
1043203275localhost,2003-01-21,20:41:15,Anonymous,,,,,,,,blank,Test,,.
I have not included that code for brevity.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=22810&edit=1