Edit report at https://bugs.php.net/bug.php?id=64770&edit=1
ID: 64770 Updated by: a...@php.net Reported by: a...@php.net Summary: stream_select() fails with pipes from proc_open() -Status: Assigned +Status: Closed Type: Bug Package: Streams related Operating System: Windows x64 PHP Version: 5.5Git-2013-05-03 (Git) Assigned To: ab Block user comment: N Private report: N New Comment: Automatic comment on behalf of ab Revision: http://git.php.net/?p=php-src.git;a=commit;h=b1ea0b7a7a580f074d889f9ff7a46566917088f2 Log: Fixed bug #64770 stream_select() fails with pipes Previous Comments: ------------------------------------------------------------------------ [2013-05-03 11:03:52] a...@php.net This might also be related to bug #63922 or bug #44908 or both. ------------------------------------------------------------------------ [2013-05-03 11:02:20] a...@php.net Description: ------------ When proc_open() delivers the pipes for a process, an attempt to stream_select on them fails. However using stream_get_contents() on the same readable pipes (like stdout) works fine. This bug currently prevents the phpt test suite from running on windows x64. Test script: --------------- <?php $descs = array( 0 => array('pipe', 'r'), // stdin 1 => array('pipe', 'w'), // stdout 2 => array('pipe', 'w'), // strerr ); $other_opts = array('suppress_errors' => false, 'binary_pipes' => true); $p = proc_open('dir', $descs, $pipes, '.', NULL, $other_opts); var_dump($p); if (is_resource($p)) { $data = ''; while (1) { $n = stream_select($pipes, $w = NULL, $e = NULL, 300); var_dump($n); if ($n === false) { echo "no streams \n"; break; } else if ($n === 0) { echo "process timed out\n"; proc_terminate($p, 9); break; } else if ($n > 0) { $line = fread($pipes[1], 8192); if (strlen($line) == 0) { /* EOF */ break; } $data .= $line; } } var_dump(strlen($data)); $ret = proc_close($p); var_dump($ret); } ?> ==DONE== Expected result: ---------------- resource(7) of type (process) int(5) int(42) int(0) ==DONE== Actual result: -------------- resource(7) of type (process) Warning: stream_select(): unable to select [2]: No such file or directory (max_fd=5) in C:\php-sdk\php55\vc11\x64\php-src\stream_select_0.php on line 18 bool(false) no streams int(0) int(255) ==DONE== ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=64770&edit=1