【问题标题】:interactive shell script command line php交互式shell脚本命令行php
【发布时间】:2012-07-03 03:15:35
【问题描述】:

我正在尝试在我的 Web 应用程序上实现一项功能,以使用户能够与服务器上的命令行进行交互。

问题是:是否可以将命令行与 Web 应用程序集成,这样即使进程仍在后台运行,任何输入都可以被接收和处理,所以任何结果都可以显示给用户它就像 -a 函数。

我已经尝试了所有 exec() shell_exec() 我尝试通过 2> SomeFile.txt 重定向交互式命令的结果,但输出不会是交互式命令的结果

【问题讨论】:

  • 现有的 php-shell 有很多。你可以看看它们是如何设计的,甚至可以在你的项目中使用它们的代码(如果它们是免费许可的(:)
  • 我不是在尝试 shell 脚本 php,我正在尝试使用 php 为另一种语言编写 shell 脚本??
  • 如果您使用的是 linux,在您的命令行中,您可以使用这里建议的命令行监听器:stackoverflow.com/questions/5135321/…
  • 你也可以实现一个端口监听器,并发送命令和字符串到那个端口,然后端口监听器将消息转发到你的网络应用程序或存储在数据库中,这样你的应用程序就可以从中获取数据不时通过ajax。

标签: php zend-framework shell command-line interactive


【解决方案1】:

1.With 命令返回输出。使用:

shell_exec — 通过 shell 执行命令并将完整的输出作为字符串返回

passthru — 执行外部程序并显示原始输出

system — 执行外部程序并显示输出

2.With 命令不返回输出。使用:

system 或 passthru 然后检查 return_var 参数并打印输出

system('touch readme.txt', $retval);
if(!$retval){
    print 'Touched file with success';
}

或者

if(!touch('readme.txt', time())){
    print 'Whoops, something went wrong...';
}

【讨论】:

  • 这无济于事,因为当我使用 shell_exec 或任何其他方法时,命令行进程仍处于打开状态,我无法检索任何数据。打开时我无法发送任何数据
猜你喜欢
  • 2015-12-26
  • 2011-02-25
  • 2021-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-14
  • 1970-01-01
相关资源
最近更新 更多