Java支持php,让PHP5支持java(原创)

让PHP5支持java(原创)

作者: 曲文庆  日期: 2008-11-04 20:35

字体大小: 小 中 大

最早发布在chinaunix上的,后来被n多blog转载,自己开博了,却没有收录(汗),在自己的博上重发一下。

让PHP5支持java

作者:曲文庆

所需安装包(latest version):

jdk-1_5_0_05-linux-i586.bin (http://java.sun.com/j2se/1.5.0/download.jsp)

php-java-bridge_2.0.8.tar.bz2 (http://php-java-bridge.sourceforge.net/)

httpd-2.0.55.tar.gz (http://httpd.apache.org/download.cgi)

php-5.0.5.tar.gz (http://www.php.net/downloads.php)

libxml2-sources-2.6.19.tar.gz (http://xmlsoft.org/sources/)

mysql-4.1.14.tar.gz (http://www.mysql.com/)

安装目录:

jdk --> /usr/local/jdk

apache --> /usr/local/apache

mysql?/usr/local/mysql

1.安装jdk-1_5_0_05

下载地址:http://java.sun.com/j2se/1.5.0/download.jsp

cp /path/to/ jdk-1_5_0_05-linux-i586.bin /usr/local/

cd /usr/local

chmod +x jdk-1_5_0_05-linux-i586.bin

./ jdk-1_5_0_05-linux-i586.bin

ln -s jdk-1_5_0_05-linux-i586 jdk

2.设置环境变量,java的运行需要设置一下环境变量。

在/etc/profile中设置如下参数:

JAVA_HOME=/usr/local/jdk

PATH=$PATH:$JAVA_HOME/bin

并且export它们。

修改原来的export语句为:

export JAVA_HOME PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC

若要立即生效,在shell下边依次执行一遍上边的语句。

输入java -version能看到版本信息,即安装jdk成功了。

3.安装Aapache.

必须编译成允许动态加载模块的方式,即在configure时要加--enable-so选项,以便加载

Php这个整合模块。

下载地址 http://httpd.apache.org/download.cgi

tar zxvf httpd-2.0.55.tar.gz

./configure --prefix=/usr/local/httpd-2.0.55 --enable-module=most --enable-shared=max --enable-so –enable-rewrite

make

make install

ln –s /usr/local/httpd-2.0.55 /usr/local/apache

注意:Apache2编译的时候使用"PREFORK"(默认方式),否则java运行一段时间后停止工作并报告错误"PHP Fatal error:   Unable to create Java Virtual Machine"。

关于这个问题,没有具体测试,有时间的朋友可以试试。

4.安装libxml2,php5需要该组件支持。

下载地址 http://xmlsoft.org/downloads.html

tar zxvf libxml2-sources-2.6.19.tar.gz

./configure --prefix=/usr/lib --with-ftp --with-http --with-html --with-regexps --with-debug --with-mem-debug --with-pic --with-catalog --with-docbook --with-xinclude --with-schemas --with-c14n --with-threads --with-fexceptions --with-history --with-iso8859x --with-thread-alloc && make && make install

5.安装MySQL

tar zxvf mysql-4.1.14.tar.gz

./configure --prefix=/usr/local/mysql-4.1.14 --localstatedir=/var/lib/mysql-4.1.14 --with-extra-charsets=all --enable-thread-safe-client && make && make install && cp support-files/my-large.cnf /etc/my.cnf && cp support-files/mysql.server /etc/rc.d/init.d/mysqld && chmod 755 /etc/rc.d/init.d/mysqld && ln –s /usr/local/mysql-4.1.14 /usr/local/mysql

6.安装PHP

下载地址 http://www.php.net/downloads.php

tar zxvf php-5.0.5.tar.gz

./configure --with-apxs2=/usr/local/apache/bin/apxs --enable-track-vars --disable-debug --with-config-file-path=/usr/local/apache/conf --with-gd --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-libxml-dir=/usr/lib --with-zlib-dir=/usr/lib --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql=/usr/local/mysql && make && make install && cp ./php.ini-dist /usr/local/apache/conf/php.ini

7.安装php-java-bridge_2.0.8.tar.bz2

下载地址 http://php-java-bridge.sourceforge.net/

tar jxvf php-java-bridge_2.0.8.tar.bz2

cd php-java-bridge-2.0.8

(具体环境要求和安装请阅读INSTALL文档)

phpize

./configure --with-java=$JAVA_HOME --disable-servlet

make && make install

编辑php.ini文件

增加

[Java]

java.java_home="/usr/local/jdk"

java.java="/usr/local/jdk/jre/bin/java"

java.log_file="/var/log/php-java-bridge.log"

java.classpath="usr/local/lib/php/extensions/no-debug-non-zts-20041030/JavaBridge.jar"

java.libpath="/usr/local/lib/php/extensions/no-debug-non-zts-20041030"

extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20041030"

extension = java.so

验证:

重启Apache ,用pstree查看,有“httpd---java---java---8*[java]”进程。

用命令行方式检测 echo '<?php phpinfo() ?>' | php | fgrep java ,应该返回字样有“java status => running”

通过Web方式查看phpinfo() ,存在Java小节。

在访问目录下创建java.php文件

// get instance of Java class java.lang.System in PHP

$system = new Java('java.lang.System');

// demonstrate property access

echo 'Java version=' . $system->getProperty('java.version') . '
';

echo 'Java vendor=' . $system->getProperty('java.vendor') . '
';

echo 'OS=' . $system->getProperty('os.name') . ' ' .

$system->getProperty('os.version') . ' on ' .

$system->getProperty('os.arch') . '
';

// java.util.Date example

$formatter = new Java('java.text.SimpleDateFormat',

"EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");

echo $formatter->format(new Java('java.util.Date'));

?>

通过Web访问,能正确显示Java版本、操作系统、系统时间等信息,说明执行成功。

在下列环境测试通过:

1、RedHat 9.0   kernel-2.4.26   httpd-2.0.54   php-5.0.4   mysql-4.1.12   php-java-bridge_2.0.8   jdk-1_5_0_05-linux-i586

2、RedHat AS4   kernel-2.6.12.5   httpd-2.0.55   php-5.0.5   mysql-4.1.14(5.0.15)   php-java-bridge_2.0.8   jdk-1_5_0_05-linux-i586

评论: 0 |

引用: 0 |

阅读: 6646

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值