Bug #64770 [NEW]: stream_select() fails with pipes from proc_open()

From: Date: Fri, 03 May 2013 11:02:20 +0000
Subject: Bug #64770 [NEW]: stream_select() fails with pipes from proc_open()
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-178773@lists.php.net to get a copy of this message
From:             ab
Operating system: Windows x64
PHP version:      5.5Git-2013-05-03 (Git)
Package:          Streams related
Bug Type:         Bug
Bug description:stream_select() fails with pipes from proc_open()

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 bug report at https://bugs.php.net/bug.php?id=64770&edit=1
-- 
Try a snapshot (PHP 5.4):   https://bugs.php.net/fix.php?id=64770&r=trysnapshot54
Try a snapshot (PHP 5.3):   https://bugs.php.net/fix.php?id=64770&r=trysnapshot53
Try a snapshot (trunk):     https://bugs.php.net/fix.php?id=64770&r=trysnapshottrunk
Fixed in SVN:               https://bugs.php.net/fix.php?id=64770&r=fixed
Fixed in release:           https://bugs.php.net/fix.php?id=64770&r=alreadyfixed
Need backtrace:             https://bugs.php.net/fix.php?id=64770&r=needtrace
Need Reproduce Script:      https://bugs.php.net/fix.php?id=64770&r=needscript
Try newer version:          https://bugs.php.net/fix.php?id=64770&r=oldversion
Not developer issue:        https://bugs.php.net/fix.php?id=64770&r=support
Expected behavior:          https://bugs.php.net/fix.php?id=64770&r=notwrong
Not enough info:            https://bugs.php.net/fix.php?id=64770&r=notenoughinfo
Submitted twice:            https://bugs.php.net/fix.php?id=64770&r=submittedtwice
register_globals:           https://bugs.php.net/fix.php?id=64770&r=globals
PHP 4 support discontinued: https://bugs.php.net/fix.php?id=64770&r=php4
Daylight Savings:           https://bugs.php.net/fix.php?id=64770&r=dst
IIS Stability:              https://bugs.php.net/fix.php?id=64770&r=isapi
Install GNU Sed:            https://bugs.php.net/fix.php?id=64770&r=gnused
Floating point limitations: https://bugs.php.net/fix.php?id=64770&r=float
No Zend Extensions:         https://bugs.php.net/fix.php?id=64770&r=nozend
MySQL Configuration Error:  https://bugs.php.net/fix.php?id=64770&r=mysqlcfg



Thread (3 messages)

« previous php.bugs (#178773) next »