让PHP5支持java(原创)

最早发布在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文件
<?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') . '<br />';
echo 'Java vendor=' . $system->getProperty('java.vendor') . '<br />';
echo 'OS=' . $system->getProperty('os.name') . ' ' .
              $system->getProperty('os.version') . ' on ' .
              $system->getProperty('os.arch') . ' <br />';

// 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
标签: 原创 PHP Java
评论: 0 | 引用: 0 | 阅读: 7140