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