免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4565 | 回复: 6
打印 上一主题 下一主题

[调试] 让PHP5支持java [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-15 09:25 |只看该作者 |倒序浏览
让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

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

论坛徽章:
0
2 [报告]
发表于 2005-11-15 11:40 |只看该作者

回复 1楼 cbbn_net 的帖子

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

论坛徽章:
0
3 [报告]
发表于 2007-01-06 14:07 |只看该作者
Fatal error: java(): Unable to create Java Virtual Machine in D:\LAMP\web\wildfire\test.php on line 4

出现这个错误

论坛徽章:
0
4 [报告]
发表于 2007-09-12 15:25 |只看该作者
输入phpize
-bash: phpize:command not found

论坛徽章:
0
5 [报告]
发表于 2007-09-12 15:59 |只看该作者
有人回答一下吗

论坛徽章:
0
6 [报告]
发表于 2007-09-22 01:40 |只看该作者
原帖由 worldwar 于 2007-9-12 15:25 发表
输入phpize
-bash: phpize:command not found


加上php安装路径

/your/php/path/bin/phpize

论坛徽章:
0
7 [报告]
发表于 2007-09-24 09:50 |只看该作者
以前试了一下,如果java中的class出错的话,apache就崩溃了,不知道现在怎样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP