如何在php中打开终端窗口并执行命令?

Posted

技术标签:

【中文标题】如何在php中打开终端窗口并执行命令?【英文标题】:How to open terminal window and execute command in php? 【发布时间】:2018-02-03 17:32:02 【问题描述】:

我正在制作一个需要在服务器上运行 java 程序的网站(它是一个 ubuntu 服务器)。我想通过从 php 执行它来实现这一点。我尝试了“shell_exec”和“exec”,但它们都没有打开终端窗口或执行 jar 文件。它确实可以在我的 windows pc 上运行,但我也希望它也可以在我的 linux 服务器上运行。我正在使用 xampp 作为服务器。

我在 windows 上使用的命令:

shell_exec("java -jar PATH/TO/JAR/FILE.jar PARAMETERS");

【问题讨论】:

你可以试试system(),passthru()或者proc_open(),我不知道PHP在windows上是怎么工作的,可能你要使用不同的函数。 @BenoîtZu 不幸的是,这些功能都不起作用。 它实际上并没有打开一个可见的终端窗口,但它应该可以工作。 还要确保执行 php 脚本的用户有权访问该文件并执行它。 此外,如果 Java 应用程序运行异步或长期存在的进程,您必须在 shell_exec() 中执行一些其他操作才能使其继续运行,否则它会运行并立即关闭。 【参考方案1】:

我自己通过在 shell_exec() 命令末尾添加 '2>&1 &' 来修复它。这使得 php 脚本等到程序完成。

新命令:

shell_exec("java -jar PATH/TO/JAR/FILE.jar PARAMETERS 2>&1 &");

【讨论】:

以上是关于如何在php中打开终端窗口并执行命令?的主要内容,如果未能解决你的问题,请参考以下文章

linux下退出终端,让PHP程序继续执行的命令

如何使用 Java 打开命令提示符并插入命令?

windows 终端命令详解

命令行窗口内,如何执行一个程序并等待结果

如何在 Java 的 linux 终端中交互地执行多个命令?

linux 中如何修改文件内容?