Annotation of embedaddon/php/ext/standard/tests/streams/bug60602.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: Bug #60602 proc_open() modifies environment if it contains arrays
                      3: --FILE--
                      4: <?php
                      5: 
                      6: $descs = array(
                      7:        0 => array('pipe', 'r'), // stdin
                      8:        1 => array('pipe', 'w'), // stdout
                      9:        2 => array('pipe', 'w'), // strerr
                     10: );
                     11: 
                     12: $environment = array('test' => array(1, 2, 3));
                     13: 
                     14: $cmd = (substr(PHP_OS, 0, 3) == 'WIN') ? 'dir' : 'ls';
                     15: $p = proc_open($cmd, $descs, $pipes, '.', $environment);
                     16: 
                     17: if (is_resource($p)) {
                     18:        $data = '';
                     19: 
                     20:        while (1) {     
                     21:                $w = $e = NULL;
                     22:                $n = stream_select($pipes, $w, $e, 300);
                     23: 
                     24:                if ($n === false) {
                     25:                        echo "no streams \n";
                     26:                        break;
                     27:                } else if ($n === 0) {
                     28:                        echo "process timed out\n";
                     29:                        proc_terminate($p, 9);
                     30:                        break;
                     31:                } else if ($n > 0) {
                     32:                        $line = fread($pipes[1], 8192);
                     33:                        if (strlen($line) == 0) {
                     34:                                /* EOF */
                     35:                                break;
                     36:                        }
                     37:                        $data .= $line;
                     38:                }
                     39:        }
                     40:        var_dump(strlen($data));
                     41: 
                     42:        $ret = proc_close($p);
                     43:        var_dump($ret);
                     44:        var_dump(is_array($environment['test']));
                     45: } else {
                     46:        echo "no process\n";
                     47: }
                     48: ?>
                     49: ==DONE==
                     50: --EXPECTF--
                     51: Notice: Array to string conversion in %s on line %d
                     52: 
                     53: Notice: Array to string conversion in %s on line %d
                     54: int(%d)
                     55: int(0)
                     56: bool(true)
                     57: ==DONE==

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>