我正在尝试编写一个php页面 要求像
这样的服务器程序gdb
问题是,如果我做了
<?php
exec(" gdb code", $out);
?>
PHP调用该命令并存在 但我想做的就像打开一个“终端”会话 用户在该程序中输入命令,如
gdb code
..
break main
..
run
在每个命令之后我给他输出,然后他给我下一个命令 如果我这样做的话,它将无法运作
<?php
exec(" gdb code", $out);
exec(" break", $out);
exec(" run", $out);
?>
可以从浏览器运行PHP 我用pro_open
试了一下<?php
$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("file", "/var/www/err.log", "a")
);
$cwd = '/var/www';
$env = array('some_option' => 'aeiou');
$StdErr='';
$process = proc_open('/bin/bash', $descriptorspec, $pipes, $cwd, $env);
if (is_resource($process)) {
fwrite($pipes[0], "gcc code ");
fwrite($pipes[0], " break main");
fflush($pipes[0]);
fclose($pipes[0]);
while(!feof($pipes[1])) {
echo fgets($pipes[1], 1024);
}
echo $StdErr;
fclose($pipes[1]);
$return_value = proc_close($process);
echo "command returned : $return_value\n";
}
谢谢你。
答案 0 :(得分:0)
编辑刚刚看到你在浏览器中尝试过。绝对没有简单的方法可以做到这一点。如果您希望从浏览器进行交互式会话,则必须运行单独的守护程序进程并从PHP转发命令(并返回输出)。
这一点都不简单;所以,如果你仍然想这样做...我会建议从如何创建一个deamon开始;然后编写一个tcp套接字服务器(或其他IPC)。
请原谅粗俗的语法