让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