当前位置:首页 » 编程语言 » php与java通信

php与java通信

发布时间: 2022-09-23 11:03:26

Ⅰ 基于ICE的phpjava间的通信

PHP与JAVA融合的开发环境

一.系统环境

1.初始安装

防火墙开放接口:21,22,80,2401,8009,10000,eth0
Redhat linux 9.0
Development Tools

Network Servers
VSFtp
CVS-1.11.2-10
Mysql 3.23.54

2.包安装

JDK 1.5
下载地址:http://www.netshine.com.cn/linux/j2sdk-1_4_2_04-linux-i586.rpm

Tomcat 5.0.19
下载地址:http://www.netshine.com.cn/linux/jakarta-tomcat-5.0.19.tar.gz

3.脚本安装

Webmin 1.110
下载地址:http://www.netshine.com.cn/linux/webmin-1.110.tar.gz

ZendOptimizer 2.5.1
下载地址:http://www.netshine.com.cn/linux/ZendOptimizer-2.5.1-Linux_glibc21-i386.tar.gz

4.手工编译

Apache 2.0.49
下载地址:http://www.netshine.com.cn/linux/httpd-2.0.49.tar.gz

PHP 4.3.5
下载地址:http://www.netshine.com.cn/linux/php-4.3.5.tar.gz
JK 2-2.0.4
下载地址:http://www.netshine.com.cn/linux/jakarta-tomcat-connectors-jk2-src-current.tar.gz

5.客户机环境

Windows XP Professional
Absolute Telnet 3.0
Zend Encoder
Macromedia Dreamweaver MX 2004
Borland JBuilder 9 Enterprise
WinCVS 1.3
下载地址:http://www.netshine.com.cn/linux/WinCvs13b17.zip

二.系统安装

启动Linux安装光盘,安装基本系统:FTP、开发工具和MySQL3.23.54。如果你是手工编译安装MySQL,要记得以后在编译PHP等程序时要指明MySQL的具体路径,否则会因找不到路径而导致编译出错。

三.安装webmin1.110

用Webmin来配置系统,傻瓜化,可以节省不少力气,所以一般我都先安装它。安装过程很简单,执行setup.sh脚本后照提示一步一步来就可以了。

# cd webmin*
# ./setup.sh

四.安装JDK1.5

1.编辑如下三个文件,没有指明全路径的放在你自己的home目录就可以。

/etc/profile
JAVA_HOME=/usr/java/j2sdk1.4.2_04
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
CVSROOT=/usr/local/cvsroot
PATH=.:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export JAVA_HOME CLASSPATH CVSROOT PATH

/etc/ld.so.conf
/usr/java/j2sdk1.4.2_04/jre/lib/i386
/usr/java/j2sdk1.4.2_04/jre/lib/i386/server

HelloWorld.java
class HelloWorld
{
public static void main(String[] args)
{
//本文件测试Java环境是否安装成功。
System.out.println("Hello World!");
}
}

2.执行以下命令:

# rpm -ivh j2sdk*.rpm //安装JDK包。
# source /etc/profile //重载profile环境。
# ldconfig //创建动态链接库缓存文件。
# javac -d . HelloWorld.java //编译测试文件。
# java HelloWorld //运行程序测试安装是否成功。

五.安装Apache

# tar xvzf httpd* //解压源码包。
# cd httpd* //进入安装目录。
# ./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared=most --enable-rewrite
# make;make install //编译并安装。

说明:

--enable-so选项:让Apache可以支持DSO模式,注意,我们在这里采用的是Apache2.0的语法。如果你的Apache是1.3版本,应改为--enable-mole=so。

--enable-mods-shared=most选项:告诉编译器将所有标准模块都编译为DSO模块。你要是用的是Apache1.3,改为--enable-shared=max就可以。

--enable-rewrite选项:支持地址重写功能,使用1.3版本的朋友请将它改为--enable-mole=rewrite。

六.编译安装PHP

1.执行命令

#tar xvzf php* //解压源码包
#cd php* //进入PHP安装命令
#./configure --prefix=/usr/local/php --with-mysql --with-apxs2=/usr/local
/apache/bin/apxs --with-java=/usr/java/j2sdk1.4.2_04
#make;make install //编译并安装
#cp php.ini-dist /usr/local/php/lib/php.ini //复制php配置文件
#cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429 //extensions目录
#ln -s java.so libphp_java.so //建立连接,忘记了会出错哦
#cd Zend* //进入ZendOptimizer目录
#./install //安装PHP加速器

说明:

--with-apxs2=/usr/local/apache/bin/apxs是Apache2的语法,1.3版本的用户请使用--with-apxs=/usr/local/apache/bin/apxs。

2.编辑下面三个文件

/usr/local/apache/conf/httpd.conf
LoadMole php4_mole moles/libphp4.so

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

AddDefaultCharset gb2312

/usr/local/apache/htdocs/test.php
<?php
//本程序测试PHP的JAVA环境是否可用,
代码是从http://www.php.net/manual/en/ref.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') . '<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'));
?>

/usr/local/php/lib/php.ini
register_globals=On
[Java]
java.class.path=/usr/local/php/lib/php/php_java.jar:/home/jim/myclass
java.home=/usr/java/j2sdk1.4.2_04
java.library=/usr/java/j2sdk1.4.2_04/jre/lib/i386/libjava.so
java.library.path=/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429
extension_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429
extension=libphp_java.so

注意:

(1).如果你刚刚从以前老版本的PHP转换到新版本,可能会发现你的PHP程序很多都不能用了。别紧张!把register_globals打开就一切正常啦!这是因为老版本的PHP,它的register_globals默认是开着的,而新版本,却把它关了的缘故。

(2)./home/jim/myclass是我存放JAVA组件的路径,你可以根据实际情况修改,但是为了安全起见,可不要放在web目录下哦。

Ⅱ php通信于java 的socket通信,区别是什么

原理上没有区别,就是在Tcp上一层。自己封装通信信息,实现上,当然就有语法不同了,还有php的socket有一个额外的包

Ⅲ PHP与JAVA交互,该怎么搞

这是一门课程了。javaweb,,或者叫jsp。jsp就是由html和java脚本,等语言构成的。java程序嵌套在html里。相当于php。以网页的形式将java展现。这也就是所谓的动态。以为java程序获取的时间会变动。或者数据库变动从而引起网页的变动。具体实现,你可以在网上查找jsp教程。以下是一个jsp页面的例子:注释(1):上面一句是jsp命令语句,标准形式表示,利用java脚本语言。引入java.util包里的所有文件。编码为utf-8注释2:java脚本之后是标准的html格式。可嵌入java代码">MyJSP'index.jsp'startingpageThisismyJSPpage.可嵌入java脚本

Ⅳ Socket编程 php 与 java 通信 问题

看不懂php

但是我觉得你这个问题可能是因为php发生的EOF不符合java标准。或者根本没有发送EOF标识。

超时应该发生在 ss = in.readLine();这一行代码中的in.read()。

下面是j2se文档资料
int java.io.InputStream.read()
Reads the next byte of data from the input stream. The value byte is returned as an int in the range 0 to 255. If no byte is available because the end of the stream has been reached, the value -1 is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.

A subclass must provide an implementation of this method.

Returns:
the next byte of data, or -1 if the end of the stream is reached.
Throws:
IOException if an I/O error occurs.

这句话非常重要
Returns:
the next byte of data, or -1 if the end of the stream is reached.

当没有发送end of the stream 标识的话,那么程序属于等待状态。 也就是java端一直处于读的状态。
解决这个问题的话。 要么终端手动发送eof.要么终端发送每一次交互的字节长。服务器端根据这个字节长来读取相应长度的字节。

Ⅳ 请教一下java和php协同开发的方法

引用
因为在做垂直搜索工作中,使用的是java编写的一个搜索类库。做垂直搜索,很多实用要使用到配置。当搜索的信息量大时,网站的更新。搜索程序的配置维护是一个不可忽视的问题。所以用了php做网页,提供配置界面,这样就可以不用直接修改配置文件或是配置数据库表。当把配置信息配置好了,我们需要检测配置是否正确,因为使用的是java程序,所以检测配置的正确与否使用的也是java程序来检测。这里就存在一个问题,就是需要把php页面上的信息传入到java程序中去检测。这个时候就需要php和java通信了。下面我就来介绍下怎么使php跟java通信(当然,你也可以使用类似webservice等技术)也就是php中调用java程序。 php要调用java程序:需要以下准备,php程序,java程序,还有就是shell程序或是bat程序。下面分别介绍下在linux服务器下php调用java程序和在windows服务器下调用java程序。前提是php,apache,jdk的环境都已经配置好。
一 在linux下php调用java程序是通过shell文件。分别是以下三个文件: test_shell.php test_shell.java test_shell.sh 他们的源代码如下:

1.test_shell.java程序代码

public class test_shell {

public static void main(String[] args) {

System.out.println("你输入的参数是:"+args[0]+"t"+args[1]);

}

}

2.test_shell.php程序代码

<?php

/*

* 该函数是用来执行shell命令的,其实还可以使用:exec(),system(),
* popen()和pclose(),passthru() 函数。最长用的是前面两个和例中使
* 用的shell_exec()。

*/

$args1="我喜欢你";

$args2="我很爱你";

// 注意空格

$r=shell_exec("./test_shell.sh $args1 $args2");

echo $r;

?>

3.test_shell.sh程序代码是

#!/bin/sh

JAVA_HOME=/usr/local/jdk

CLASSPATH=.:/usr/local/jdk/jre/lib/rt.jar:/usr/local/apache/htdocs/test_shell/test_shell.class

PATH=$PATH:$JAVA_HOME/bin

export JAVA_HOME CLASSPATH PATH

cd /usr/local/apache/htdocs/test_shell

java test_shell

#shell代码结束

以下是三个程序的存放路径和运行次序。
1.三个文件都必须在同一目录下,比如在/usr/local/apache/htdocs/test_shell/下,不然php很难调到java程序。

2.把test_shell.java程序编译成test_shell.class,然后把test_shell.class文件存放到CLASSPATH中。如果系统配置了那些环境变量,这里在配置一次是没有坏处的,也不会影响配置好的系统环境变量。这里设置的好处是当没有配置jdk环境配置,只有jre时,则需把jre放到/usr/local/jdk下就以。

二、下面先介绍在windows服务器下,php调用java程序是通过bat文件来的。分别是以下三个文件: test_bat.php test_bat.java test_bat.sh 他们的源代码如下:

1.java程序

public class test_bat {

public static void main(String[] args) {

System.out.println("你输入的参数是:"+args[0]+"t"+args[1]);

}

}

2.test_bat.php程序代码

<?php

/*

* 该函数是用来执行shell命令的,其实还可以使用:exec(),system(),
* popen()和pclose(),passthru() 函数。最长用的是前面两个和例中使
* 用的shell_exec()。

*/

$args1="我喜欢你";

$args2="我很爱你";

// 注意空格

$r=shell_exec("./test_shell.sh $args1 $args2");

echo $r;

?>

3.test_bat.sh程序代码是

@echo off
set path=%path%;%cd%jrebin
set CLASSPATH=.;%cd%jrelibrt.jar;%cd%test_bat.class
java test_bat %1 %2

#bat代码结束

1.三个文件都必须放在同一目录下,比如在/usr/local/apache/htdocs/test_bat/下,不然php很难调到java程序。

2.把test_bat.java程序编译成test_bat.class,然后把test_bat.class文件存放到CLASSPATH中。如果系统配置了那些环境变量,这里在配置是没有坏处的,也不会影响配置好的系统环境变量。这里设置的好处是当没有配置jdk环境配置,只有jre时,则需把jre放到跟跟test_bat.java同一目录下就行了。

三、上面两个例子中,test_shell.sh用的绝对路径,test_bat.bat是用的相对路径。不管是绝对还是相对,只要路径对了就行了。

Ⅵ php程序与java程序之间做数据交互,怎么做

  1. 用php的curl模拟浏览器请求是访问java服务器程序

  2. 2.用java的一个http类库同样发送http请求来访问PHP服务器

    $context=stream_context_create(array('http'=>array('method'=>"GET",'timeout'=>30,)));

    $string=file_get_contents('http://www..com/s?wd=php%20file_put_contents',false,$context);//换成java地址

    echo'这可不是网络,只是我输出了网络的返回';

    echo$string;

Ⅶ php CA加密和JAVA通信

PHP的RSA签名和验签方法

  1. 签名方法

  2. openssl_sign($msg, $sign, $ key, OPENSSL_ALGO_SHA1);

  3. $msg:要签名的字符串。

  4. $sign:做好签名字符串。

不可以写成 $sign = openssl_sign($msg, $sign, $ key, OPENSSL_ALGO_SHA1);

$ key:密钥,密钥格式,必须为rsa_private_key.pem的格式。

OPENSSL_ALGO_SHA1:密钥算法,如果与Java等交互,必须相互配对。

2. 验签方法

$result= openssl_verify($msg, $sign, $key);

$msg:签名的原字符串。

$sign:签名字符串。

$ key:密钥,密钥格式,必须为rsa_private_key.pem的格式。

$result:验签结果;为1时,验签正确;其余失败。

Ⅷ php如何与java交互

(Stringpath,Map<String,String>map,Stringencode){
try{
StringdataStr=null;
if(map!=null&&!map.isEmpty()){
StringBuffersb=newStringBuffer();
for(Map.Entry<String,String>entry:map.entrySet())
sb.append("&").append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(),encode));
dataStr=sb.toString().substring(1);
}
System.out.println(dataStr);

URLurl=newURL(path);
=(HttpURLConnection)url.openConnection();
urlConnection.setConnectTimeout(3000);
urlConnection.setRequestMethod("POST");
urlConnection.setDoOutput(true);

if(null!=dataStr){
byte[]data=dataStr.getBytes();
urlConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
urlConnection.setRequestProperty("Content-Length",String.valueOf(data.length));
OutputStreamos=urlConnection.getOutputStream();
os.write(data);
os.close();
}

intreCode=urlConnection.getResponseCode();
if(reCode==200){
Stringre=changInputStreamToString(
urlConnection.getInputStream(),encode).trim();
System.out.println(re);
if(re.equals("0")){
return"用户名不存在";
}elseif(re.equals("1")){
return"登陆成功";
}elseif(re.equals("-1")){
return"未知错误";
}else{
return"密码错误";
}
}
}catch(IOExceptione){
e.printStackTrace();
}
returnnull;
}

Ⅸ php程序与java程序之间做数据交互,怎么做

可以用php的curl模拟浏览器请求是访问java服务器程序,或者用java的一个http类库同样发送http请求来访问PHP服务器

Ⅹ PHP与JAVA交互,该怎么搞

前后台交互常用的就是HTTP方式,GET和POST。
JAVA后台跑在java容器里面,接受前台的请求就可以了。

建议你 用一下Chrome的插件POST MAN 你就懂了。
这个可以让你对HTTP请求有一个比较深入的理解。

不光是java后台,.net后台,php后台都一样。
使用的都是HTTP协议,数据传输的格式都是一样的。

热点内容
pythonsetget 发布:2025-01-10 17:53:12 浏览:852
买脚本多少钱 发布:2025-01-10 17:52:34 浏览:934
文件夹万能解密器破解版 发布:2025-01-10 17:48:12 浏览:463
荣耀v30跟荣耀50哪个配置高 发布:2025-01-10 17:43:00 浏览:239
php发布系统 发布:2025-01-10 17:34:17 浏览:366
dnf刷疲劳脚本 发布:2025-01-10 17:33:39 浏览:350
海豚php框架 发布:2025-01-10 17:30:27 浏览:227
数据聚合算法 发布:2025-01-10 17:30:27 浏览:987
AI智能名片小程序源码 发布:2025-01-10 17:27:33 浏览:403
ios开发算法 发布:2025-01-10 17:21:49 浏览:369