xref: /php-src/ext/standard/tests/file/bug22414.phpt (revision fc9266a5)
1--TEST--
2Bug #22414 (passthru() does not read data correctly)
3--SKIPIF--
4<?php
5if (getenv("SKIP_SLOW_TESTS")) die('skip slow test');
6?>
7--INI--
8output_handler=
9--FILE--
10<?php
11
12    $php = getenv('TEST_PHP_EXECUTABLE');
13    $php_escaped = getenv('TEST_PHP_EXECUTABLE_ESCAPED');
14    $tmpfile = tempnam(__DIR__, 'phpt');
15    $args = ' -n ';
16
17    /* Regular Data Test */
18    passthru($php_escaped . $args . ' -r " echo \"HELLO\"; "');
19
20    echo "\n";
21
22    /* Binary Data Test */
23    $cmd = $php_escaped . $args . ' -r ' . escapeshellarg("readfile(@getenv('TEST_PHP_EXECUTABLE'));");
24    if (substr(PHP_OS, 0, 3) != 'WIN') {
25        $cmd = $php_escaped . $args . ' -r ' . escapeshellarg('passthru("'.$cmd.'");') . ' > '.escapeshellarg($tmpfile);
26    } else {
27        $cmd = $php_escaped . $args . ' -r ' . "\"passthru('".addslashes($cmd)."');\"" . ' > '.escapeshellarg($tmpfile);
28    }
29    exec($cmd);
30
31    if (md5_file($php) == md5_file($tmpfile)) {
32        echo "Works\n";
33    } else {
34        echo "Does not work\n";
35    }
36
37    @unlink($tmpfile);
38?>
39--EXPECT--
40HELLO
41Works
42