Bug->Req #69290 [Fbk->Opn]: Invalid modes do not trigger errors
| From: | roborg at gmail dot com | Date: | Sat, 28 Mar 2015 14:54:32 +0000 |
| Subject: | Bug->Req #69290 [Fbk->Opn]: Invalid modes do not trigger errors | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-191662@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=69290&edit=1
ID: 69290
User updated by: roborg at gmail dot com
Reported by: roborg at gmail dot com
Summary: Invalid modes do not trigger errors
-Status: Feedback
+Status: Open
-Type: Bug
+Type: Feature/Change Request
Package: Program Execution
Operating System: Windows
PHP Version: 5.5.23
Block user comment: N
Private report: N
New Comment:
Hi
This isn't really related to #51800 - that's just how I found out that my script
wasn't working.
I understand BC is a concern, but the only scripts affected by this are ones that aren't
working anyway - they're just failing silently, which in my opinion is much worse than
generating an error of some level (even just a notice).
If you pass in an invalid value for the first parameter e.g. change 'pipe' to
'foo' then you get an error - I can't see a reason that the mode parameter
shouldn't be checked as well.
I guess if silently failing is what was intended then this is more of a feature request than a bug
report so I'll update the type.
Previous Comments:
------------------------------------------------------------------------
[2015-03-28 11:39:54] ab@php.net
@roborg thanks for the report.
With the script hanging, I guess you're hitting the bug #51800 in 5.3 which was fixed in 5.5+
around last autumn. Pipe buffer on windows is way too small and can cause race conditions. Please
check, if it's so - we can close this.
Besides that, something standing in the comments is not the documentation, so it makes absolutely no
sense to claim it a bug if it doesn't work.
Thanks.
------------------------------------------------------------------------
[2015-03-28 10:38:30] roborg at gmail dot com
Status
------------------------------------------------------------------------
[2015-03-28 10:37:36] roborg at gmail dot com
I've tested the script below with these results (sorry, I can't run these on the same OS):
PHP: 5.3.5
OS: Win XP
Mode: w
Result: Script hangs
PHP: 5.3.5
OS: Win XP
Mode: a
Result: Empty string
PHP: 5.5.13
OS: Win 7
Mode: w
Result: string 'x.......'
PHP: 5.5.13
OS: Win 7
Mode: a
Result: Empty string
So the behavior has changed somewhat between 5.3 and 5.5, but not in the way I thought...
It looks like the "a" mode never actually worked (as the output was empty), but just
tricked PHP/Windows into not hanging.
I still think failing silently is a really bad thing though.
<?php
$descriptors = array(
array('pipe', 'r'),
array('pipe', 'w'),
array('pipe', 'w'), // This one changes between 'a' and 'w'
);
$process = proc_open('c:\php\php.exe -r "$f = fopen(\'php://stderr\',
\'w+\');fwrite($f, str_repeat(\'x\' . chr(10), 2048));', $descriptors,
$pipes);
var_dump(stream_get_contents($pipes[1]));
var_dump(stream_get_contents($pipes[2]));
proc_close($process);
------------------------------------------------------------------------
[2015-03-25 20:41:03] cmb@php.net
This code has not been changed since 2003[1], so it's somewhat
unlikely that a BC break has been introduced in PHP 5.x.y. If you
can reproduce a behavioral change, please let us know (and change
the bug status back to "Open").
[1] <https://github.com/php/php-src/commit/1a314027d3c388a19a06ac370fa08a46d474e1bd#diff-19f692ed5f75687fc7bc1929910e540fR337>
------------------------------------------------------------------------
[2015-03-25 17:27:58] roborg at gmail dot com
I found the issue in my code because I was passing in "a" as recommended in http://php.net/proc_open#97012 and I wasn't getting
any output.
I'm pretty confident it used to work, so to me it seems BC has already been broken, as
it's changed from working to failing silently - I'd rather it changed from working to
giving an error (/warning/notice).
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=69290
--
Edit this bug report at https://bugs.php.net/bug.php?id=69290&edit=1