Linux 下php擴展java的相關步驟以及疑難解析

在CentOS 5.3下配置 php 調用 java 的相關步驟以及疑難解析,主要問題如下:
1)使用phpize建立php擴展時,出現:Cannot find config.m4. ;
2)configure失敗:configure: error: /bin/sh './configure.gnu' failed for server;

[b]第一步:下載php-java-bridge源碼包[/b]
php-java-bridge下載相關地址([b][color=red]推薦[/color][/b]):
[url]http://ftp.heanet.ie/disk1/sourceforge/p/project/ph/php-java-bridge/OldFiles/[/url]
# [b][color=blue]wget http://ftp.heanet.ie/disk1/sourceforge/p/project/ph/php-java-bridge/OldFiles/php-java-bridge_4.0.7.tar.gz[/color][/b]


[b]第二步:Centos下安裝 php-java-bridge[/b]
1、解壓 php-java-bridge 源碼包
# [b][color=blue]tar xzvf php-java-bridge_4.0.7.tar.gz[/color][/b]

2、開始安裝 php-java-bridge
# [b][color=blue]cd php-java-bridge-4.0.7[/color][/b]
# [b][color=blue]/usr/local/php/bin/phpize[/color][/b]
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519

3、執行 configure 命令
# [b][color=blue]./configure --with-java=/usr/local/java,/usr/local/java/jre[/color][/b]

4、執行 make 命令
# [b][color=blue]make[/color][/b]

5、執行 make install 命令
# [b][color=blue]make install[/color][/b]
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/

[b]第三步:配置 php 擴展 java[/b]
在 php.ini 文件的末尾添加如下內容:
# [color=blue][b]vi /usr/local/php/etc/php.ini[/b][/color]
[Java]
java.class.path="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613"
java.java_home="/usr/local/java"
java.library=/usr/local/java/lib
java.library.path="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613"
extension_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613
extension=java.so

[b]第四步:重啓apache服務[/b]
# [color=blue][b]/usr/local/apache/bin/apachectl restart[/b][/color]

[b]第五步:測試php調用java 是否成功[/b]
1) 新建一個 test.php
# [color=blue][b]vi test.php[/b][/color]
<?php
$system=new Java("java.lang.System");
print 'Java version='.$system->getProperty('java.version');
echo "程序已經斷開....";
?>

2) 測試
# [color=blue][b]php test.php[/b][/color]
Java version=1.6.0_01程序已經斷開....

若出現如上的 “Java version=1.6.0_01程序已經斷開....”,說明安裝成功!


==================================================================================================================================================
[b]【備註】[/b]

(1)在安裝php-java-bridge_6.2.1.tar.gz時,出現如下問題,導致不能安裝:
下載URL:[url]http://sourceforge.net/projects/php-java-bridge/[/url]

#[b] [color=blue]/usr/local/php/bin/phpize[/color] [/b]
Cannot find config.m4.
Make sure that you run '/usr/local/php/bin/phpize' in the top level source directory of the module

在此,可能是由於php或php-java-bridge的版本問題,於是更換php-java-bridge較低版本,如:php-java-bridge_3.2.1.tar.gz 等。

# [b][color=blue]/usr/local/php/bin/phpize [/color][/b]
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable is set correctly and then rerun this script.

以上說明 autoconf 軟件包沒有安裝,在CentOS 系統中可以執行如下命令:
#[b] [color=blue]sudo yum install autoconf[/color][/b]

注意:安裝autoconf軟件包時,需要依賴 imake 軟件包。但直接執行 sudo yum install autoconf 會自動安裝完成。

然後,再執行 phpize 命令:

# [b][color=blue]/usr/local/php/bin/phpize [/color][/b]
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519

(2)執行 configure 命令時
# [color=blue][b]./configure --with-java=/usr/local/java,/usr/local/java/jre[/b][/color]
......
creating libtool
appending configuration tag "CXX" to libtool
configure: creating ./config.status
config.status: creating config.h
configure: configuring in server
configure: running /bin/sh './configure.gnu' --prefix=/usr/local/php '--with-java=/usr/local/java,/usr/local/java/jre' --cache-file=/dev/null --srcdir=.
./configure.gnu: line 5: aclocal: command not found
autoheader: error: AC_CONFIG_HEADERS not found in configure.in
configure.in:15: error: possibly undefined macro: AM_INIT_AUTOMAKE
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
configure.in:16: error: possibly undefined macro: AM_CONFIG_HEADER
configure.in:20: error: possibly undefined macro: AM_PROG_GCJ
configure.in:21: error: possibly undefined macro: AC_PROG_LIBTOOL
configure.in:66: error: possibly undefined macro: AM_CPPFLAGS
configure.in:195: error: possibly undefined macro: AM_CONDITIONAL
./configure.gnu: line 11: libtool: command not found
./configure.gnu: line 14: automake: command not found
configure: error: cannot find install-sh or install.sh in . ./.
Back-end configuration failed.
Please install the recommended autoconf, libtool and automake versions
or disable back-end configuration and use the pre-compiled J2EE back-end:

./configure --disable-backend --with-java=<JAVA_HOME>

configure: error: /bin/sh './configure.gnu' failed for server

若出現以上錯誤,請根據推薦安裝:
# [color=blue][b]./configure --disable-backend --with-java=/usr/local/java[/b][/color]

即可解決。
經過我的多次嘗試,建議不使用這種方法(使用參數 --disable-backend),否則相應的擴展不成功。

(3)JavaBridge.jar的啓動問題
一般在Linux下安裝完php-java-bridge,重啓Apache之後,調用 JavaBridge.jar包的程序會自動啓動。
查看是否啓動,使用如下命令:
#[color=blue] [b]ps -ef | grep JavaBridge.jar[/b][/color]

若沒有自動啓動,網上還有另外一種啓動方式,如下:
# [color=blue][b]java -jar Javabridge.jar SERVLET:8080 3 JavaBridge.log[/b][/color]
(不可斷開!)


-----------------------------------------------------------------------------------------------------------------------------------------------
Author:Zheng Rongfeng
Date:From Nov 10, 2010 to Nov 28th, 2010
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章