我看过很多关于在PHP中使用Java的教程,但它们似乎与彼此冲突。他们中的许多人都说改变php.ini使用dll文件,但显然现在PHP 5中有“内置”功能。但这需要Tomcat?我是否必须摆脱Apache才能运行它? http://php-java-bridge.sourceforge.net/pjb/installation.php表示将.war文件放入Tomcat的autodeploy目录,但我没有看到任何名为“autodeploy”的目录。有人会一步一步解释如何让Java机器(使用Windows 7)与PHP 5和Apache一起工作吗?
答案 0 :(得分:14)
您可能会发现大量关于如何使用PHP Web应用程序中的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类(它将在后台序列化并传输调用和结果)。
如何将Bridge连接起来并将其绑定到某个本地端口有两种选择。
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,无论如何,您可以了解如何实例化并使用它中的类:
答案 1 :(得分:1)
你可以通过分支进程并通过stdin / stdout进行通信来从PHP调用一个简单的Java应用程序。或者,如果您将Sphinx集成到Web应用程序中,则可以通过进行HTTP调用进行集成。
答案 2 :(得分:1)
Quercus是Caucho Technology快速,开源,100%Java的PHP语言实现。 Quercus是Caucho Technology的Resin Application Server的一个特性,内置于Resin中 - 没有额外的下载/安装。使用Resin的开发人员可以启动PHP项目,而无需安装标准的PHP解释器(http://www.php.net),因为Quercus承担了PHP引擎的角色。