如何从PHP 5使用Java


问题内容

我看过很多有关使用PHP中的Java的教程,但它们似乎彼此冲突。他们中的许多人说将php.ini更改为使用dll文件,但是显然现在PHP
5中具有“内置”功能。但这需要Tomcat吗?我必须摆脱Apache才能运行它吗?http://php-java-
bridge.sourceforge.net/pjb/installation.php
表示将.war文件放入Tomcat的autodeploy目录中,但是我看不到任何名为“
autodeploy”的目录。有人会逐步解释如何使Java东西在具有PHP 5和Apache的Windows机器(我正在使用Windows 7)上运行吗?


问题答案:

您可能会从PHP
webapp中找到大量有关如何使用Java类的无用和过时的信息,这根本没有帮助。大约一年前,我遇到了类似的问题,我发现,足以在生产中使用的唯一成熟方法是PHP
/ Java
Bridge(您在Sourceforge上找到的一种方法)。它的工作原理比预期的要好,并且不需要Java知识(但是,如果您确实知道Java,则应考虑为此目的编写Web服务并在PHP端使用它)。

Bridge的文档不是很明显,但是请记住,您应该坚持使用它,而不要阅读其他描述不同方法的资源-请勿混淆,即不必安装任何PHP扩展名或smth-
所有这些都与从PHP调用Java的另一种(通常是过时且不受支持的)方式有关。

PHP / Java Bridge是一个网络协议,因此您在PHP端唯一需要做的就是确保在php.ini中启用了“ allow_url_include”

从Java方面,您必须将PHP / Java Bridge绑定到一个免费端口并监听连接。然后,您的PHP应用将能够对Bridge的代理文件执行“
require_once”操作,该文件将在该端口上可用。就是这样,您可以使用该代理Bridge对象从PHP脚本中透明地实例化和调用Java类(它将在后台序列化并传输调用和结果)。

有两种方法可以启动网桥并将其绑定到某些本地端口。

1)复杂的一件事:安装Tomcat,使用网桥本身和您要使用的库创建一个war文件。这种方式在这里描述:

http://php-java-bridge.sourceforge.net/pjb/webapp.php

要将战争部署到Tomcat安装中,只需将战争放入Tomcat的webapp文件夹中并重新启动即可。

2)比较容易的一种:打包一个jar而不是war并运行它(它将使用嵌入式Web服务器,因此您不必安装Tomcat并部署任何东西)。要使用这种方式,请参考以下页面:

http://php-java-bridge.sourceforge.net/pjb/desktop-apps.php

两种方法都对您有效(不要在第二个选项中看到“桌面”一词,这种方法也可以在您的PHP webapp中正常使用)。

请参阅“示例”部分中的示例,以了解如何使用它(显而易见)。您也可以参考我的小型PHP客户端,该客户端使用PHP / Java
Bridge与Java中的Neo4J嵌入式数据库通信。但是,此示例可能会更复杂,并且打算将其部署到Tomcat,无论如何,您都可以了解如何实例化和使用它的类:

https://github.com/coffeesnake/neo4j-php-
wrapper