+
95
-

回答

如何是使用php cli来执行获取用户输入的命令

<?php
echo "Are you sure you want to do this? Type 'yes' to continue: ";
$handle = fopen ("php://stdin","r");
$line = fgets($handle);
if(trim($line) != 'yes'){
echo "ABORTING!\n";
exit;
}
echo "\n";
echo "Thank you, continuing...\n";
?>

如果执行第三方程序的话

<?php
// file: proc.php

// proc_open parameters
$descriptorspec = array(

0 => array("pipe", "r"), // stdin is a pipe that the child will read from
1 => array("pipe", "w"), // stdout is a pipe that the child will write to
2 => array("pipe", "w") // stderr is a file to write to

);
$cwd = '/tmp';

$process = proc_open('bash', $descriptorspec, $pipes, $cwd);

// stream_select parameters (waits until something can be read from pipe)
$read = array($pipes[1]);
$write = null;
$except = null;
$readTimeout = 5;

if (is_resource($process)) {
stream_set_blocking($pipes[1], FALSE);

fwrite($pipes[0], "echo 'hola'\n");
fflush($pipes[0]);

stream_select($read, $write, $except, $readTimeout);
$output = fgets($pipes[1]);
echo "output = $output\n";

fwrite($pipes[0], "echo 'chao'\n");
fflush($pipes[0]);

stream_select($read, $write, $except, $readTimeout);
$output = fgets($pipes[1]);
echo "output = $output\n";

fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
$return_value = proc_close($process);

echo "return_value = $return_value\n";
}
?>


网友回复

我知道答案,我要回答