【发布时间】:2015-03-16 23:30:04
【问题描述】:
我想写web SSH控制台,发现两个问题。
我想做什么。首先我要执行start.php 文件,它有以下代码。
$process = proc_open('start', array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("pipe", "a")
), $pipes);
其次,我想运行command.php 文件,该文件在start.php 文件中创建的进程上运行命令并从中获取结果。
$pid = 12345;
print_r(process_command('ping google.com', $pid));
我只想访问过去创建的进程(cmd),向它发送命令并获取结果。
如果我可以为每个command.php 执行创建新进程,为什么会出现问题?因为新进程是新会话,如果我在过去的command.php 执行中登录到mysql,在接下来的执行中我必须再次登录到mysql,因为新进程不记得我被登录了。
Windows 上的示例。
- 我在 PHP 中创建新进程 (
cmd),我的当前目录是C:\WebServ\。
- 我写
cd /命令,我的当前目录是C:\。
这只是示例,我不想只更改目录,这对我来说不是问题。
问题是如何创建一个进程并在下一次 PHP 文件执行中访问它 - 例如,如果我想记住 mysql 会话?
- 我可以通过
proc_open函数创建进程。 - 我可以通过
get_process_status获取PID,但是如何获取当前PHP文件执行之前创建的进程资源?
下一个问题,如果可以访问过去创建的进程,如何将新命令写入创建的进程?
我不想使用 PHP 扩展。 但如果在这种情况下需要这样做,每个答案都会对我有所帮助。
如果无法访问在其他 PHP 执行中创建的进程,我想使用 while(1) 在 PHP 执行开始时控制创建的进程 - 但我希望在这种情况下不需要这样做。
那么我希望有人知道,如何编写新命令来创建cmd 进程。
如果我的问题的解决方案有问题,我会接受告诉我如何向shell_exec 打开的cmd.exe 进程发送命令,以及如何接收每个命令的响应的答案。
【问题讨论】:
-
文件如何获取命令?作为争论还是通过包含文件和调用函数/设置变量?
-
这只是代码示例,我只想在后台运行
cmd进程,向它发送命令并接收响应。 -
请查看我的更新答案。这将读取输入,并将命令发送到
cmd,直到您输入exit
标签: php shell sockets proc-open