从网站上的 PHP 脚本运行 Java 类文件

Posted

技术标签:

【中文标题】从网站上的 PHP 脚本运行 Java 类文件【英文标题】:Run Java class file from PHP script on a website 【发布时间】:2011-01-08 20:59:25 【问题描述】:

我有一个网站,并希望能够允许用户从该网站在服务器上运行 Java 文件。

我希望用户单击一个按钮,该按钮将在服务器上运行 Java 文件,并且由 Java 程序打印到标准输出的任何内容都将打印在网站上供用户查看。

如何做到这一点(从 php 调用 Java 程序并将 Java 文件中的标准实时反馈回 PHP 网站)?

更新:

感谢有关如何从 PHP 运行 Java 程序的答案。但是我也希望能够,因为 Java 程序正在打印到标准输出,它将在执行时打印出大量文本,以便能够在网页上打印出来,以便用户可以看到哪个阶段Java 程序正在执行中。

如何做到这一点,是否需要任何额外的 AJAX 或 javascript 或类似的东西?

【问题讨论】:

【参考方案1】:

查看exec 和另一个program execution functions。但是非常小心地这样做,否则这是一个漏洞利用的秘诀。

【讨论】:

【参考方案2】:

passthru功能有用吗?

http://www.php.net/manual/en/function.passthru.php

【讨论】:

【参考方案3】:

由于您提到实时,我建议设置 PHP 到 Java 桥。在每次请求时初始化 JVM 会占用大量资源。

PHP/Java Bridge

PHP/Java 桥是一个 流式传输的实现, 基于 XML 的网络协议,可以 用于连接原生脚本 引擎,例如 PHP、Scheme 或 Python,带有 Java 或 ECMA 335 虚拟机。最多50次 比通过 SOAP 的本地 RPC 更快, 需要更少的资源 网络服务器端。它更快而且 比直接更可靠 通过 Java Native 进行通信 接口,它不需要 调用 Java 的附加组件 来自 PHP 的程序或 PHP 程序 来自Java。

【讨论】:

【参考方案4】:

PHP exec() 函数是要走的路,但你应该非常小心在你允许执行的..换句话说,不要依赖用户输入,因为它可能会危及您的整个服务器。

使用 exec 调用 Java 应用程序启动器,您可以从 PHP 执行任何 Java 应用程序,例如

<?php exec("java -jar file.jar arguments", $output); ?>

【讨论】:

嗨 james,执行 java 给我权限被拒绝错误。我的用户是 apache。 我利用了你的好答案,现在我可以将 php 连接到 java,但是我的 Java 程序有 System.in 输入并且 exec 总是启动一个新的 java 程序,而不发送到同一个等待的 java 程序,我该如何改变呢?【参考方案5】:

我宁愿将 Java 类包装在 Java 小程序中,然后可以从客户端的 javascript 调用中调用它:请参阅 http://www.rgagnon.com/javadetails/java-0170.html

否则,如果调用向标准输出抛出大量文本,或者由于系统依赖性而必须在服务器上运行该类,则从 php exec 调用是可行的方法,但您可能需要类似 @ 987654322@在客户端实时显示文本。有各种 javascript 工具包的实现,例如 Dojo 或 jQuery。

对于服务器端,phphere中似乎有cometd实现。

我希望这会有所帮助...

菲利普

【讨论】:

以上是关于从网站上的 PHP 脚本运行 Java 类文件的主要内容,如果未能解决你的问题,请参考以下文章

使用我网站上的按钮运行 python 脚本 [重复]

怎么在网站上运行SH脚本

从 java servlet 运行命令行 php 脚本

在 cpanel 中使用 cron 作业运行 php 脚本

PHP 路径在 localhost 中的运行脚本上加倍

从 PHP 文件运行 python 脚本