Bug->Req #69290 [Fbk->Opn]: Invalid modes do not trigger errors

From: 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

« previous php.bugs (#191662) next »