使用php-java-bridge让PHP5支持java:
一、下载:
http://ncu.dl.sourceforge.net/project/php-java-bridge/RHEL_FC%20SecurityEnhancedLinux/php-java-bridge_5.5.4.1/php-java-bridge_5.5.4.1.tar.gz
最新的版本是:php-java-bridge_6.1.2.1.tar.gz
但不能使用这个版本,因为这个版本中缺少一个函数:java_require
二、首先说明一下安装不成功的情况:
解压:
tar zxvf php-java-bridge_5.5.4.1.tar.gz
进入目录:
cd php-java-bridge-5.5.4.1/
执行phpize:
/usr/local/php/bin/phpize
编译:
./configure --with-java=$JAVA_HOME --with-php-cOnfig=/usr/local/php/bin/php-config
编译的过程和结果都是没问题的,但接下来的make操作就要注意了:
make
报错:
phpdoc -j -c PHPDocConfig.ini>/dev/null
/bin/sh: phpdoc: command notfound
make[1]: *** [JavaRaw.inc] 错误127
make[1]: Leaving directory`/root/downloads/jdk/php-java-bridge-5.5.4.1/server'
make: ***[/root/downloads/jdk/php-java-bridge-5.5.4.1/modules/stamp]错误2
错误信息中提示没有phpdoc 命令。
在网上查阅了大量资料,知道phpdoc命令是安装phpDocumentor后生成的,而phpDocumentor的安装又是有php的pear模块完成的。
三、安装pear,为安装phpDocumentor做准备
根据网络提供的大量资料显示,所以我们首先安装pear:
同样查阅了大量的网络资料来完成。
安装pear需要使用php命令来执行一个go-pear.php的文件来完成:
go-pear.php文件的获取:
访问:http://pear.php.net/go-pear
将整个网页内容复制下来并存储为go-pear.php即可。
我们这里可以使用vim命令建立go-pear.php文件,将内容复制进去,保存,增加执行权限即可。
用php命令执行go-pear.php:
/usr/local/php/bin/phpgo-pear.php
出现如下提示:
Welcome to go-pear!
Go-pear will install the 'pear' command andall the files needed by
it. This command is yourtool for PEAR installation and maintenance.
Go-pear also lets you download and installthe following optional PEAR
packages: PEAR_Frontend_Web-beta,PEAR_Frontend_Gtk2, MDB2.
If you wish to abort, press Control-C now, or press Enter tocontinue:
回车,出现如下内容:
HTTP proxy (http://user:password@proxy.myhost.com:port), orEnter for none::
再回车,出现如下内容,提示你安装位置:
Below is a suggested file layout for your new PEARinstallation. To
change individual locations, type the number in front of the
directory. Type 'all' to change all of them orsimply press Enter to
accept these locations.
1. Installation prefix ($prefix) :/root/downloads/jdk
2. Temporary filesdirectory : $prefix/temp
3. Binariesdirectory : $prefix/bin
4. PHP code directory ($php_dir) :$prefix/PEAR
5. Documentation basedirectory : $php_dir/docs
6. Data basedirectory : $php_dir/data
7. Tests basedirectory : $php_dir/tests
1-7, 'all' or Enter to continue:
我们可以在命令行后输入1-7和all或者直接回车继续,
我们这里选择输入all,回车。
上一步选择all以后,就要对每一项的安装目录进行定义,这个根据变量提示来确定,这里之定义了四项,定义一项回车一次:
1-7, 'all' or Enter to continue: all
Installation prefix ($prefix) [/root/downloads/jdk] :
Temporary files directory [$prefix/temp] :
Binaries directory [$prefix/bin] :/usr/bin
PHP code directory ($php_dir) [$prefix/PEAR] :/usr/local/php/bin
Documentation base directory [$php_dir/docs] :/usr/local/php/docs
Data base directory [$php_dir/data]: /usr/local/php/data
Tests base directory [$php_dir/tests] :
回车后,返回刚才定义的信息:
Below is a suggested file layout for your new PEARinstallation. To
change individual locations, type the number in front of the
directory. Type 'all' to change all of them orsimply press Enter to
accept these locations.
1. Installation prefix ($prefix) :/root/downloads/jdk
2. Temporary filesdirectory : $prefix/temp
3. Binariesdirectory : /usr/bin
4. PHP code directory ($php_dir) :/usr/local/php/bin
5. Documentation basedirectory : /usr/local/php/docs
6. Data basedirectory : /usr/local/php/data
7. Tests basedirectory : $php_dir/tests
1-7, 'all' or Enter to continue:
到这里,再回车:
The following PEAR packages are bundled with PHP:PEAR_Frontend_Web-beta,
PEAR_Frontend_Gtk2, MDB2.
Would you like to install these as well? [Y/n] :
输入Y,继续:
Loading zlib: ok
Bootstrapping Installer...................
Bootstrapping PEAR.php............(remote) ok
Bootstrapping Archive/Tar.php............(remote) ok
Bootstrapping Console/Getopt.php............(remote) ok
Extracting installer..................
Downloading package: PEAR.............ok
Downloading package: Structures_Graph....ok
Preparing installer..................
Updating channel "doc.php.net"
Update of Channel "doc.php.net" succeeded
Updating channel "pear.php.net"
Update of Channel "pear.php.net" succeeded
Updating channel "pecl.php.net"
Update of Channel "pecl.php.net" succeeded
Installing selected packages..................
Downloading and installing package: PEAR.............warning:pear/PEARrequires package "pear/Archive_Tar" (recommended version 1.3.7)
warning: pear/PEAR requires package "pear/Structures_Graph"(recommendedversion 1.0.3)
warning: pear/PEAR requires package "pear/Console_Getopt"(recommended version1 .2.3)
warning: pear/PEAR requires package "pear/XML_Util" (recommendedversion 1.2.1)
downloading PEAR-1.9.1.tgz ...
Starting to download PEAR-1.9.1.tgz (293,587 bytes)
......................................done: 293,587 bytes
install ok: channel://pear.php.net/PEAR-1.9.1
PEAR: Optional feature webinstaller available (PEAR's web-basedinstaller)
PEAR: Optional feature gtkinstaller available (PEAR'sPHP-GTK-based installer)
PEAR: Optional feature gtk2installer available (PEAR'sPHP-GTK2-based installer)
PEAR: To install optional features use "pear installpear/PEAR#featurename"
Installing bootstrap package: Structures_Graph.......install ok:channel://pear. php.net/Structures_Graph-1.0.3
Downloading and installing package:Archive_Tar-stable.......downloading Archive_Tar-1.3.7.tgz ...
Starting to download Archive_Tar-1.3.7.tgz (17,610 bytes)
...done: 17,610 bytes
install ok: channel://pear.php.net/Archive_Tar-1.3.7
Downloading and installing package:Console_Getopt-stable.......downloading Console_Getopt-1.2.3.tgz...
Starting to download Console_Getopt-1.2.3.tgz (4,011 bytes)
...done: 4,011 bytes
install ok: channel://pear.php.net/Console_Getopt-1.2.3
Downloading and installing package:PEAR_Frontend_Web-beta.......downloadingPEAR_Frontend_Web-0.7.4.tgz ...
Starting to download PEAR_Frontend_Web-0.7.4.tgz (53,321bytes)
...done: 53,321 bytes
downloading HTML_Template_IT-1.3.0.tgz ...
Starting to download HTML_Template_IT-1.3.0.tgz (23,309bytes)
...done: 23,309 bytes
install ok: channel://pear.php.net/HTML_Template_IT-1.3.0
install ok: channel://pear.php.net/PEAR_Frontend_Web-0.7.4
Downloading and installing package: PEAR_Frontend_Gtk2.......Didnot download optional dependencies: pear/XML_Parser, pear/XML_Util,use --alldeps to download automatically
Did not download optional dependencies: pear/System_Command, use--alldeps to download automatically
pear/PEAR_Frontend_Gtk2 requires PHP extension "php-gtk"(version >= 2.0.0dev)
pear/Config can optionally use package "pear/XML_Parser"
pear/Config can optionally use package "pear/XML_Util"
pear/Gtk2_EntryDialog requires PHP extension "php-gtk" (version>= 2.0.0dev)
pear/Gtk2_FileDrop requires PHP extension "php-gtk" (version>= 2.0.0dev)
pear/MIME_Type can optionally use package"pear/System_Command"
downloading Config-1.10.11.tgz ...
Starting to download Config-1.10.11.tgz (27,939 bytes)
...done: 27,939 bytes
downloading MIME_Type-1.2.0.tgz ...
Starting to download MIME_Type-1.2.0.tgz (11,581 bytes)
...done: 11,581 bytes
install ok: channel://pear.php.net/Config-1.10.11
install ok: channel://pear.php.net/MIME_Type-1.2.0
Downloading and installing package: MDB2.............downloadingMDB2-2.4.1.tgz ...
Starting to download MDB2-2.4.1.tgz (119,790 bytes)
...done: 119,790 bytes
install ok: channel://pear.php.net/MDB2-2.4.1
MDB2: Optional feature fbsql available (Frontbase SQL driver forMDB2)
MDB2: Optional feature ibase available (Interbase/Firebirddriver for MDB2)
MDB2: Optional feature mysql available (MySQL driver forMDB2)
MDB2: Optional feature mysqli available (MySQLi driver forMDB2)
MDB2: Optional feature mssql available (MS SQL Server driver forMDB2)
MDB2: Optional feature oci8 available (Oracle driver forMDB2)
MDB2: Optional feature pgsql available (PostgreSQL driver forMDB2)
MDB2: Optional feature querysim available (Querysim driver forMDB2)
MDB2: Optional feature sqlite available (SQLite2 driver forMDB2)
MDB2: To install optional features use "pear installpear/MDB2#featurename"
******************************************************************************
WARNING! The include_path defined in thecurrently used php.ini does not
contain the PEAR PHP directory you just specified:
If the specified directory is also not in the include_path usedby
your scripts, you will have problems getting any PEAR packagesworking.
到这里提示如下,提示是否更改php.ini文件
Would you like to alter php.ini?[Y/n] :
选择Y,继续:
php.iniinclude_path updated.
Current includepath : .:/usr/local/php/lib/php
Configureddirectory : /root/downloads/jdk/PEAR
Currently used php.ini (guess) :/usr/local/apache2/conf/php.ini
Press Enter to continue:
回车,继续,出现提示的地方就按照提示输入信息继续,直到完成!
四、用pearlist可以查看安装了的pear包:
Package Version State
Archive_Tar 1.3.7 stable
Config 1.10.11 stable
Console_Getopt 1.2.3 stable
HTML_Template_IT 1.3.0 stable
MDB2 2.4.1 stable
MIME_Type 1.2.0 stable
PEAR 1.9.1 stable
PEAR_Frontend_Web0.7.4 beta
Structures_Graph 1.0.3 stable
四、安装完了pear后,使用pear来安装PhpDocumentor
首先查找到pear安装位置:
find / -name pear
结果:
/usr/bin/pear
执行安装:
/usr/bin/pear installPhpDocumentor
Did not download optional dependencies:pear/XML_Beautifier, use --alldeps to downloadautomatically
pear/PhpDocumentor can optionally usepackage "pear/XML_Beautifier" (version >=1.1)
downloading PhpDocumentor-1.4.3.tgz...
Starting to downloadPhpDocumentor-1.4.3.tgz (2,423,486 bytes)
..........
当出现如下信息的时候就说明phpdoc安装完成了:
install ok:channel://pear.php.net/PhpDocumentor-1.4.3
注意:可能PhpDocumentor-1.4.3的服务器在美国加州,尽管软件只有不到3M,安装过程相当慢,有可能还会断掉,如果出现这样的情况需要多试几次才行。
五、接下来就是重新编译安装php-java-bridge-5.5.4.1了:
进入php-java-bridge-5.5.4.1的目录:
执行phpize
/usr/local/php/bin/phpize
编译:
./configure --with-java=$JAVA_HOME --with-php-cOnfig=/usr/local/php/bin/php-config
安装:
make clean
make
make install
注意:如果在make 过结束出现错误,那么请执行make clean清理一下,重新编译后,再make 就可以了。
配置:
编辑php.ini文件:
vim /usr/local/php/etc/php.ini
添加如下内容:
[Java]
java.java_home="/usr/local/java/jdk1.6/"
java.java="/usr/local/java/jdk1.6/jre/bin/java"
java.log_file="/var/log/php-java-bridge.log"
java.classpath="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/JavaBridge.jar"
java.libpath="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"
extension_dir ="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"
extension = java.so
重启php
killall php-fpm
/usr/local/php/sbin/php-fpm &
访问phpinfo页面:
如果有java模块,就说明安装成功了。
查看是否安装和配置成功
# java -version
java version "1.6.0_32"
Java(TM) SE Runtime Environment (build 1.6.0_32-b03)
Java HotSpot(TM) Client VM (build 11.3-b02, mixed mode)
JavaBridge.jar的启动:
一般在Linux下安装完php-java-bridge,重启Apache之后,调用 JavaBridge.jar包的程序会自动启动。
查看是否启动,使用如下命令:
# ps -ef | grep JavaBridge.jar
启动方式,如下:
在JavaBridge.jar所在目录运行命令
# java -jar JavaBridge.jar SERVLET_LOCAL:8081 &
(加& 是让其在后台运行)
测试是否支持java:
touch Test.java
vim Test.java
加入代码
public class Test{
public static void main(String[] args){
System.out.println("Hello,Welcome to Linux World!");
}
}
javac Test.java
java Test
输出 Hello,Welcome to Linux World! 则运行成功!
多谢好文章提供的思路,少走不少弯路,大功告成!
原文地址:
http://www.dangkai.com/ArticlePage/Article35457.htm