返回列表 发帖

[保留] [调试] 让PHP5支持java

让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=$PATHJAVA_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编译的时候使用"REFORK"(默认方式),否则java运行一段时间后停止工作并报告错误"HP 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

[ 本帖最后由 HonestQiao 于 2005-11-15 09:30 编辑 ]


blazingsnow 回复于:2005-11-15 11:40:20

php-java-bridge是很不错
都可以调用jdbc,还可以捕捉异常

yueliangdao0608 回复于:2007-01-06 14:07:53

Fatal error: java(): Unable to create Java Virtual Machine in D:\LAMP\web\wildfire\test.php on line 4

出现这个错误

worldwar 回复于:2007-09-12 15:25:08

输入phpize
-bash: phpize:command not found

worldwar 回复于:2007-09-12 15:59:45

有人回答一下吗

foolkaka 回复于:2007-09-22 01:40:19

引用:原帖由 worldwar 于 2007-9-12 15:25 发表
输入phpize
-bash: phpize:command not found


加上php安装路径

/your/php/path/bin/phpize

sunnyfun 回复于:2007-09-24 09:50:13

以前试了一下,如果java中的class出错的话,apache就崩溃了,不知道现在怎样。




原文链接:[url]http://bbs.chinaunix.net/viewthread.php?tid=648644

转载请注明作者名及原文出处
让中国Python发展的更快 ,更好.

返回列表