我已经看了很多关于从PHP使用Java的教程,但他们似乎与彼此冲突。他们中的很多人都说要将php.ini改为使用dll文件,但显然现在PHP5中有“内置”功能。但那需要Tomcat?我必须摆脱Apache来运行它吗? http://php-java-bridge.sourceforge.net/pjb/installation.php表示将.war文件放入Tomcat的autodeploy目录中,但我没有看到任何名为“autodeploy”的目录。有人会一步一步解释如何使用PHP 5和Apache在Windows计算机上(我使用Windows 7)获得Java工作?如何从PHP 5使用Java
回答
您可能会发现大量关于如何从您的PHP webapp使用Java类的无用和过时的信息,根本没有任何帮助。大约一年前,我遇到了一个类似的问题,我发现成熟度足以用于生产的唯一方法是PHP/Java Bridge--您在Sourceforge上找到的那个。它比人们所期望的更好,并且不需要Java知识(但是,如果您确实知道Java,则应考虑为此编写Web服务并在PHP端使用它)。
Bridge的文档不是很明显,但是请记住,您应该坚持使用它,并且不要阅读描述不同方法的其他资源 - 不要混淆,即不必安装任何PHP扩展或者没有 - 它们都涉及另一种(通常是过时和不受支持的)从PHP调用Java的方法。
PHP/Java桥是一种网络协议,所以你需要在你的PHP端的唯一的事情是确保“allow_url_include”在php.ini
启用从你必须让PHP Java端/ Java Bridge绑定到一个空闲端口并监听连接。然后,您的PHP应用程序将能够执行Bridge的代理文件的“require_once”,该代理文件将在该端口上可用。就是这样,您可以使用该代理Bridge对象(它将在后台序列化并传输调用和结果)从PHP脚本透明地实例化和调用Java类。
有两个选择如何获取网桥并将其绑定到某个本地端口。
1)复杂的:建立一个Tomcat,创建与桥本身和你想使用图书馆战争文件。这样,这里描述:
http://php-java-bridge.sourceforge.net/pjb/webapp.php
要部署战成Tomcat安装简单地把战争到Tomcat的web应用程序文件夹,然后重新启动它。
2)更简单:打包一个jar而不是war并运行它(它将使用嵌入式web服务器,因此您不必安装Tomcat并部署任何东西)。走这条路是指此页:
http://php-java-bridge.sourceforge.net/pjb/desktop-apps.php
这两种方式会为你工作(不看“桌面”这个词在第二个选项,这样将正常工作与你的PHP Web应用中)。
参考关于如何将“实施例”部分(obvously)在使用它的示例。您也可以参考我的小型PHP客户端,该客户端使用PHP/Java Bridge与Java中的Neo4J嵌入式数据库交谈。然而这个样本可能更复杂,它的目的是要部署到Tomcat,反正你可以有一个想法如何实例化和使用类从中:
这是完美的!谢谢! – 2011-05-10 06:32:10
您可以通过分叉进程并通过stdin/stdout进行通信,从PHP调用一个简单的Java应用程序。或者,如果您将Sphinx集成到Web应用程序中,则可以通过进行HTTP调用进行集成。
我不想多次调用java,只需要一次,然后就新的音频文件进行通信以识别。这是因为在分配识别器时有很多开销,但之后并不多。一个webapp听起来有趣,但我从来没有写过一个... – 2011-05-10 06:44:23
栎是Caucho Technology的快速,开放源代码,PHP语言的100%Java实现。 Quercus是Caucho Technology的Resin Application Server的一项功能,内置于Resin中 - 不需要额外的下载/安装。使用Resin的开发人员可以启动PHP项目,而无需安装标准的PHP解释器(http://www.php.net),因为Quercus扮演着PHP引擎的角色。
整洁。这是GPL,所以我绝对可以将它用于我的研究应用。 – 2015-03-17 03:49:25
- 1. PHP 5:从XML
- 2. 如何使用StandardTokenizer从Lucene的5.x.x
- 3. 如何从Silverlight 5中使用XNA
- 4. JavaBridge PHP-Java如何从php文件中调用java类
- 5. 如何从Java使用Telnet
- 6. 如何从XML使用Java
- 7. 如何从使用Java
- 8. 使用Java执行Java 5代码6
- 9. 如何从使用PHP
- 10. 如何在Java EE 5+中重用EJB
- 11. 如何使数字范围从5到-5而不是范围从5到10?
- 12. 如何在PHP 5中启用pdo_mysql?
- 13. 如何使用HTML 5
- 14. Spring 5如何使用log4j
- 15. Rails 5 - 如何使用Pundit
- 16. 无法使用Java 6或7下载URL - 使用Java 5
- 17. 如何在Java脚本中使用php
- 18. 如何使用PHP或Java从HTML中提取RDFa?
- 19. 如何从TinyMCE的编辑器使用PHP,Java脚本
- 20. 如何将SecretKey从Java发送到PHP? (使用Android Studio&PhpStorm)
- 21. 如何在使用php-fpm时从ppa:ondrej/php repository使用php-5.6?
- 22. 如何使用Java从卡夫卡获取最近5天的消息
- 23. 从PHP调用Java
- 24. 0.20.2使用Java的API hadoop版本5
- 25. 如何使用SWIG从C++调用Java?
- 26. 如何从Java调用/使用MRI Ruby?
- 27. 如何使用JNI从Java调用MEMCMP
- 28. 如何使用Java 5获取主机mac地址?
- 29. 如何在5秒后使用java脚本打开新窗口
- 30. 从Java 6移植Arrays.copyOfRange到Java 5
也许你可以解释你为什么要混合Java和PHP? – johnstok 2011-05-06 11:23:49
因为我打算使用完全用Java编写的CMU Sphinx 4。我有一个Java应用程序来执行语音识别任务,以及一个用于收集音频的php应用程序。现在我收集音频并在稍后用Sphinx进行分析,然后在有机会时通过电子邮件发送结果。我需要更改应用程序以收集音频,运行语音识别,并立即通过php应用程序发回结果。 – 2011-05-07 16:26:13
autodeploy目录的含义是tomcat主目录下的'webapps'目录。 – 2011-05-09 08:26:41