简体   繁体   中英

open a terminal session from php

i'm trying to write a php page that call for a server program like

gdb

the problem is if i did

<?php
exec(" gdb code", $out); 
?>

the PHP call for the command and exist BUT what i want to do is like open a "terminal" session where the user enter commands in that program like

    gdb code
    ..
    break main
    ..
    run 

and after each command i give him the output and he give me the next command and it won't work if i did it like this

     <?php
    exec(" gdb code", $out);
 exec(" break", $out);
 exec(" run", $out);
    ?>

and the PHP can be run from a browser and i tried it with 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";
}

and thank you .

Edit just saw you do try it from a browser. There is absolutely no simple way to do this. If you want an interactive session from the browser, you must run a separate daemon process and forward commands to it from PHP (and return output).

This is not simple at all; so if you still feel like doing this.. I would recommend starting with how to create a deamon; and then write a tcp socket server (or other IPC).

Excuse the crappy grammar

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM