Voting

: max(zero, two)?
(Example: nine)

The Note You're Voting On

rustleb at hotmail dot com
18 years ago
For capturing stdout and stderr, when you don't care about the intermediate files, I've had better results with . . .
<?php
function cmd_exec($cmd, &$stdout, &$stderr)
{
$outfile = tempnam(".", "cmd");
$errfile = tempnam(".", "cmd");
$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("file", $outfile, "w"),
2 => array("file", $errfile, "w")
);
$proc = proc_open($cmd, $descriptorspec, $pipes);

if (!
is_resource($proc)) return 255;

fclose($pipes[0]); //Don't really want to give any input

$exit = proc_close($proc);
$stdout = file($outfile);
$stderr = file($errfile);

unlink($outfile);
unlink($errfile);
return
$exit;
}
?>

This isn't much different than a redirection, except it takes care of the temp files for you (you may need to change the directory from ".") and it blocks automatically due to the proc_close call. This mimics the shell_exec behavior, plus gets you stderr.

<< Back to user notes page

To Top