It appears that all three of these functions do not return false on
error as they should if the stream is not flushed successfully. Yipes!
https://bugs.php.net/bug.php?id=60110
Am I missing something here?
It's especially bad with, say, an S3 stream wrapper that wants to
write the whole thing as one HTTP request, but it could bite you with
plain old files too.
--
Tom Boutell
P'unk Avenue
215 755 1330
punkave.com
window.punkave.com
Raised this 5 years ago..
http://marc.info/?l=php-internals&m=113998880315574&w=2
Jared
-----Original Message-----
From: Tom Boutell [mailto:tom@punkave.com]
Sent: 21 October 2011 20:40
To: PHP Internals
Subject: [PHP-DEV]fclose()
,file_put_contents()
,copy()
all
fail to return false on errorIt appears that all three of these functions do not return
false on error as they should if the stream is not flushed
successfully. Yipes!https://bugs.php.net/bug.php?id=60110
Am I missing something here?
It's especially bad with, say, an S3 stream wrapper that
wants to write the whole thing as one HTTP request, but it
could bite you with plain old files too.--
Tom Boutell
P'unk Avenue
215 755 1330
punkave.com
window.punkave.com--
To
unsubscribe, visit: http://www.php.net/unsub.php
Slightly different - I agree that it's possible stream_close might
need to signal a problem, but note that it is not responsible for
flushing the output (because stream_flush is automatically called
before stream_close).
It would go a long, long, long way to at least respect the return
value of stream_flush, especially since the bug in question can affect
plain old files too, and code that doesn't return a proper value from
stream_flush is already bombing for anyone who checks the result of
calling fflush()
.
So all I'm asking is for fclose()
and its friends (copy(),
file_put_contents()
...) to pay attention when flush fails.
Those of us who are trying to write stable stream wrappers can then
just keep in mind that stream_flush is where the action is. The lack
of a return value from stream_close is annoying but not
insurmountable.
However if folks are really so worried that respecting the return
values of the flush functions will break existing (bad) code, a
php.ini option could be added:
close_checks_flush
And turned on by those of us who would really like to know if our
files are really there (:
On Sun, Oct 23, 2011 at 8:59 AM, Jared Williams
jared.williams1@ntlworld.com wrote:
Raised this 5 years ago..
http://marc.info/?l=php-internals&m=113998880315574&w=2
Jared
-----Original Message-----
From: Tom Boutell [mailto:tom@punkave.com]
Sent: 21 October 2011 20:40
To: PHP Internals
Subject: [PHP-DEV]fclose()
,file_put_contents()
,copy()
all
fail to return false on errorIt appears that all three of these functions do not return
false on error as they should if the stream is not flushed
successfully. Yipes!https://bugs.php.net/bug.php?id=60110
Am I missing something here?
It's especially bad with, say, an S3 stream wrapper that
wants to write the whole thing as one HTTP request, but it
could bite you with plain old files too.--
Tom Boutell
P'unk Avenue
215 755 1330
punkave.com
window.punkave.com--
To
unsubscribe, visit: http://www.php.net/unsub.php
--
Tom Boutell
P'unk Avenue
215 755 1330
punkave.com
window.punkave.com