[技术>>Linux]

Php-Java-Bridge让PHP5轻松实现执行JAVA代码夙愿

  • 时间:2010年12月16日 23:20:28
  • 浏览量:4523
  • 评论量:3
  • 作者:Kylingood

从做PHP开发以来,很少会想到要在PHP代码中,调用Java的类。但今天就遇到了这么一个项目.

项目的大致需求是这样:Google 的Android手机系统,内的应用包是APK格式,但在做手机电子市场的过程中需要从APK包内的AndroidManifest.xml文件中,取到些应用的包名,版本名等一些具体的信息。然而现在遇到的问题是AndroidManifest.xml是经过编译的二进制文件,通过PHP就算可以解开APK包,便也无从解析出XML的信息。

所以就必须想办法用JAVA来解析出我们所需要的信息。当然,要解决些问题,可以借助一些工具,安装在服务器端。但我怕程序方面不好处理,目前想到的办法就是PHP-JAVA桥接的方式,来解决这个难题。现在大致的思路是这样:先让PHP可以调用JAVA内的类或是包,再通过JAVA去解析AndroidManifest.xml这个文件,返回过来的数据信息,就可以通过PHP再次处理(入库或是进行其他操作)。
按些思路,通过php.net搜索java就得到以下信息链接:http://cn.php.net/manual/en/java.installation.php 此页面内明确说明,
This extension doesn't seem to exist for PHP5.
If you need Java integration in PHP 5, there is the Java bridge of Zend Server (http://www.zend.com/en/products/server-ce/) and PJB (http://php-java-bridge.sourceforge.net/pjb/).
也就是说,可以通过二种方式实现PHP-JAVA的桥接。考虑到服务器目前环境,所以我选择第二种方式:
PJB(php-java-bridge).
现在我们在服务器上安装JAVA扩展:
我的服务器(测试机)环境和软件版本为:
centos 5.5 (32位)
apache 2.2
php 5.2.14
jdk-6u23-linux-i586.bin
php-java-bridge_4.0.7.tar.gz

现在进行下面的安装说明:

1.在服务器上安装JAVA。

a.下载最新版的jdk文件

  下载最新版的jdk文件,根据你的服务器需求,选择对应的源文件。
下载载地址(可选择源文件):https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=jdk-6u23-oth-JPR@CDS-CDS_Developer


   选择好源文件后,开始下载文件:
wget http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/jdk-6u23-linux-i586.bin?BundledLineItemUUID=hnSJ_hCurSgAAAEsViBZC..R&OrderID=yHeJ_hCuMukAAAEsPyBZC..R&ProductID=QhOJ_hCw.dUAAAEsFIMcKluK&FileName=/jdk-6u23-linux-i586.bin

b.开始安装java.
   #cp jdk-6u23-linux-i586.bin  /usr/local/java
   #cd /usr/local/java
   #chmod +x jdk-6u23-linux-i586.bin  //让文件可执行
   #./jdk-6u23-linux-i586.bin   //执行后,此目录下会多出一个jdk1.6.0_23文件夹
   #ln -s jdk1.6.0_23 jdk  //此为加软链接,也可以省略
   
c.设置JAVA的环境变量。
 运用vi编辑/etc/profile文件
#vi /etc/profile
加入:
export JAVA_HOME=/usr/local/java/jdk1.6.0_23
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar

再修改:
export JAVA_HOME PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC

退出保存.
让设置生效,则执行:
#source /etc/profile
或是重启(reboot)服务器.

d.查看java是否安装成功

#java -version
java version "1.6.0_23"
Java(TM) SE Runtime Environment (build 1.6.0_23-b05)
Java HotSpot(TM) Server VM (build 19.0-b09, mixed mode)

如果能看到类似上面的信息,代表你已成功安装JAVA。

2.安装php-java-bridge 扩展

a.下载php-java-bridge 扩展包,。
  特别请大家注意,php-java-bridge包的版本请根据自己的的PHP版高低选择合适的。我就遇到很无语

的情况,开始选择了最新版,但是我的PHP版本不高,所以在执行phpize的时候总是出错,像这样:
Cannot find config.m4.
Make sure that you run '/usr/local/php/bin/phpize' in the top level source directory of the
module
php-java-bridge 主站在这里,请按你的环境选择下载对应的包:http://php-java-bridge.sourceforge.net/pjb/download.php

b.安装php-java-bridge
 #tar -xzvf php-java-bridgeXX.XX.tar.gz
 解压从网络上下载的文件。
 
 #cd php-java-bridgeXX.XX
 #phpize  //会出现如下输出
 Configuring for:
 PHP Api Version:         20041225
 Zend Module Api No:      20060613
 Zend Extension Api No:   220060519

 执行configure命令
 #./configure --with-java=/usr/local/java/jdk1.6.0_23,/usr/local/java/jdk1.6.0_23/jre
 
 执行make && make install
 
 #make && make install
 Installing shared extensions:     /usr/lib/php/modules/
 如果顺利的话,就会看到上面的输出信息。

3.配置php.ini,增加java扩展
  打开并修改php.ini文件,在最后面增加:
    java.class.path="/usr/lib/php/modules"  //扩展目录
    java.java_home="/usr/local/java/jdk1.6.0_23"  //java安装目录
    java.library="/usr/local/java/lib"       //库文件目录
    java.library.path="/usr/lib/php/modules/"
    extension_dir="/usr/lib/php/modules/"
    extension=java.so    //java扩展

4.重启服务器并编辑测试文件
  #service httpd restart  
  #vi index.php
  输入以下代码:

<?php
  $v = new java("java.lang.System");
  $arr=$v->getProperties();
   foreach ($arr as $key => $value) {
   print $key . " -> " . $value . "<br>\n";
 }


访问index.php,如果看到类似于以下内容,那么恭喜您,配置成功!现在您就可以开心地编写代码,实现您想要的功能了。



最后,谢谢以下几篇文章的作者,大家要是遇到什么问题可以参考以下几篇文章:
http://morgan363.javaeye.com/blog/807163
http://blog.saycoo.com/archives/88
http://blog.sina.com.cn/s/blog_51d3553f0100j5n3.html
http://blog.csdn.net/iloveolerp/archive/2009/03/26/4027831.aspx
http://www.linuxidc.com/Linux/2010-08/27586p2.htm
 

原创文章如转载,请注明:转载OOPHP开源博客 [ http://www.oophp.cn/article/view/id/410 ]

上一篇:OOPHP开源博客数据库文件和安装说明已... 下一篇:[转]百万级访问量网站的技术准备工作

: Baidu搜藏 QQ书签 Google书签 Del.icio.us POCO网摘 Yahoo书签 新浪ViVi 365Key网摘 天极网摘 和讯网摘 Windows Live 提交新发现,Dig it

用户推荐文章
相关文章
网友评论
发表评论

会员的头像

: 请选个帅照吧!
:  *  尊姓大名大名(2-30字).
:  *  来了就多说几句吧(4-250字)
:  *  没办法,只为防机器人@_@