java执行php代码块 java能写php

如何在php中执行java代码?windows下java执行php代码块的安装
第一步:安装JDK,这是非常容易的,java执行php代码块你只需一路回车的安装好 。然后做好以下步骤 。
在 Win9x 下加入 :“PATH=%PATH%;C:\jdk1.2.2\bin” 到AUTOEXEC.BAT文件中
在 NT /Win2000下加入 “;C:\jdk1.2.2\bin”到环境变量中 。
这一步是非常重要的,这样PHP才能正确的找到需调用的JAVA类 。
第二步:修改你的PHP.INI文件 。
[java]
extension=php_java.dll
java.library.path=c:\web\php4\extensions\
java.class.path="c:\web\php4\extensions\jdk1.2.2\php_java.jar;c:\myclasses"
在PHP.INI中加入extension=php_java.dll
并在[java]中,设定好java.class.path,让它指向php_java.jar , 如果你使用新的JAVA类,你也应该存入这个路径,在这篇例子中,java执行php代码块我们使用c:\myclasses这个目录 。
第三步:测试环境,创建如下PHP文件:
?
$system = new Java("java.lang.System");
print "Java version=".$system-getProperty("java.version")."\n";
print "Java vendor=".$system-getProperty("java.vendor")."\n\n";
print "OS=".$system-getProperty("os.name")." ".
$system-getProperty("os.version")." on ".
$system-getProperty("os.arch")."\n";
$formatter = new Java("java.text.SimpleDateFormat","EEEE,
MMMM dd, yyyy 'at' h:mm:ss a zzzz");
print $formatter-format(new Java("java.util.Date"))."\n";
?
java怎么调用php的语句是什么PHP调用JAVA方式
1.背景
在开发招商银行信用卡分期付款功能过程中java执行php代码块,在支付成功之后需要对银行的返回数据进行签名验证,因签名加密方式招商银行是不提供的,只提供java执行php代码块了相应的JAVA验证类测试例子,而本项目采用的是PHP架构方式,因此需要PHP调用JAVA的验证类来测试签名是否正确 。
2.目的
本文档提供一种PHP调用JAVA类的方式来进行招行的支付成功签名验证,本方法也可用于其他银行的JAVA签名验证方式 。
3.名词解释
名词
解释说明
php-java-bridge
PHP和JAVA的连接桥
4.php-java-bridge安装和配置介绍
4.1 安装
Php-java-bridge下载路径:
最新php-java-bridge版本是php-java-bridge_6.2.1.tar.gz解压之后采用/usr/local/php/phpize进行模块编译,提示Cannot find config.m4,版本过高问题,采用了5.4.4.2版本 。
编译及安装java执行php代码块:
tar zxvf php-java-bridge_5.4.4.2.tar.gz
cd php-java-bridge-5.4.4.2/
/usr/local/php/bin/phpize
./configure --disable-servlet --with-java=/usr/local/java/,/usr/local/java/jre --with-php-config=/usr/local/php/bin/php-configmakemake install
4.2 配置
vim /usr/local/php/etc/php.ini
[新增]
extension=java.so
[java]
java.java_home="/usr/local/java/"
java.java="/usr/local/java/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/"java.log_level="3"
java.hosts="10.204.79.232:8081"
4.3 启动
重新启动nginx或者apache,输入?php phpinfo();?可以看到java support
Enabled
java bridge
5.4.4.2
java.log_level
2
手动启动javaBridge
java -jar JavaBridge.jar SERVLET:8080
也可以尝试使用java -jar JavaBridge.jar SERVLET_LOCAL:80814.4 测试
解压javaBridge.jar,取出java目录下相关的Java.inc文件测试代码java执行php代码块:
require_once("java/Java.inc");
$string = new Java("java.lang.String", "HelloWorld");echo $string;
$system=new Java("java.lang.System");
echo "Java version=".$system-getProperty("java.version")." ";注意java执行php代码块:java/Java.inc记得从javaBridge.jar解压出来放在相关php代码中注意取值:java_is_true java_is_false java_values5.注意事项及配置过程中的问题
下述描述在实际配置测试过程中可能会碰到的问题及解决方法:
5.1问题
问题1:
configure: error: host_alias is not set. Make sure to run config.guessBack-end configuration failed.
Please install the recommended autoconf, libtool and automake versionsor disable back-end configuration and use the pre-compiled J2EE back-end:
./configure --disable-backend --with-java=JAVA_HOME
configure: error: ./configure.gnu failed for server安装yum install libtool即可
5.2注意事项
事项1:
远程调用require_once(‘‘);需要设置php.ini的allow_url_include参数为on,同时编辑 JavaBridge 部署的 Web 应用程序目录中的 web.xml 文件,如下:
取消对这个部分的注释,以便允许对您的 Java 类进行远程访问init-param
param-namepromiscuous/param-name
param-valueOn/param-value
/init-param
事项2:
在实际生产环境中,考虑到如果每台机器都部署一个JavaBridge服务的话,不好维护 。故考虑在单台或2台左右机器上部署,其他机器连接到部署机器上,可以做分流承压的功效并且易监控 。在外网环境下发现在调用部署环境的内外网IP都无法获取到指定文档 。实际require_once本质就是调用部署环境的java.inc文件,可以考虑把相关文件放在本地生产环境上,但在引用Java_require相关JAR包会提示连接不到JavaBridge服务,阅读Java.inc可以查看它会通过几个地方设置JAVA_HOST宏变量,第一种是通过require_once里面的IP或者域名和端口,另外一种是在未设置JAVA_HOST宏变量的前提下读取php.ini,如果都没有java.hosts参数则默认为127.0.0.1:8080 。
排除第一种方式如果采用读取php.ini的话,因为本身java.hosts参数不属于PHP可人为设置的参数,采用ini_set函数并不能指定java.hosts的值,所以一种方式是在所有项目的生产环境的php.ini都指定内网IP和端口,如java.hosts=10.204.79.231:8080 。还有一种方式,查阅Java.inc可以看到是在未设置JAVA_HOST变量的前提下是去读取php.ini,我们可以在require_once(‘java/Java.inc‘)之前新增一行define ("JAVA_HOSTS", $host) 。
5.3参考例子
个人的实际测试代码如下:
private function _checkSign($strText, $strSign){$ret = false;
try{
$host = ConfigWrapper::load()-services-phpjava-host;if($host != NULL){
define ("JAVA_HOSTS", $host);
}
require_once(‘java/Java.inc‘);
java_require(self::CMBJAR);
$pay = new Java(‘testCdpaySign‘, self::CERFILE);$result = $pay-checkSign((string)$strText, (string)$strSign);if(java_is_true($result) == 1){
$ret = true;
}
}catch (\Exception $e) {
Logger::debug("_checkSign = " . $e-getMessage());}
return $ret;
}
Java 写的应用程序如何调用PHP写的应用程序?接口怎么调用?PHP是编程语言和应用程序服务器的结合 。PHP和其它的编程语言类似java执行php代码块,使用变量存储临时数值,使用操作符处理变量 。PHP的真正价值在于它是一个应用程序服务器 。
当谈到应用程序服务器的时候,我是指一个把几个不同的技术组合为一个完整的套件的程序 。这些技术包括:
* 一个强壮的编程语言 。
* 存取数据库中存储的数据 。
* 支持 Internet协议,尤其是电子邮件和HTTP协议 。
注意:应用程序服务器有许多其它的特性,这里只列出了最基本的特性 。
由于提供了这些多种不同技术的前端接口,PHP可以使工作变的很容易 。
本章的其它部分讲述了有关PHP的许多繁杂资料 , 以及它在应用软件开发中起到的作用 。
1.1 起源
PHP是由Rasums Lerdorf创建的,它开始是一个简单的用Perl语言编写的程序,用来记录Rasums Lerdorf自己在线简历的访问者 。以后它又被用C语言重新写过,范围扩大到访问数据库 。在这期间,有许多人向Rasums Lerdorf要此程序的拷贝,以便自己使用 。Rasums Lerdorf为此写了一些介绍此程序的文档,并发布PHP v1.0 。以后,越来越多的人开始使用PHP,并强烈要求增加一些其他的特性 , 如循环语句和数组变量等 。到这时,其他的一些程序员也开始参与PHP源码的编写(主要有Zeev Suraki和Andi Gutmans),很明显 , 此时的PHP为了以后的发展,必须重新编写 。因此,PHP v3.0就出现了 。
1.2 特性
PHP的特性包括:
【java执行php代码块 java能写php】* 开放源码 -- 所有的PHP源码都可以得到 。事实上,所有的源码都包含在随书附带的光盘中 。
* 没有运行费用 -- PHP是免费的 。
* 基于服务器端 -- 由于PHP是在Web服务器端运行的,PHP程序可以很大、很复杂而不会降低客户端的运行速度 。
* 跨平台 -- 虽然本书是以Linux为重点介绍的,但PHP程序可以运行在UNIX,Linux,或者Windows操作系统下 。
* 嵌入HTML -- 因为PHP语言可以嵌入到HTML内部,所以PHP很容易学习 。
* 简单的语言 -- 和Java和C不同,PHP语言坚持以基本语言为基础,然而它的功能也强大到足以支持任何类型的Web站点 。
* 效率高 -- 和其它的解释性语言相比,PHP系统消耗较少的系统资源 。当PHP作为Apache Web服务器的一部分时,运行代码不需要调外部二进制程序 , 服务器解释脚本不需要承担任何额外负担 。
* 分析XML -- 用户可以组建一个可以读取XML信息的PHP版本 。
* 数据库模块 -- 用户可以使用PHP存取Oracle、Sybase、MS SQL、Adabase D、MySQL、mSQL、PostgreSQL、dBase、FilePro、Unix dbm、Informix/Illustra等类型的数据库,以及任何支持ODBC标准的数据库 。
* 文件存取--PHP有许多支持文件存取函数 。
* 文本处理--PHP有许多函数处理字符串,其中包括模式匹配的能力 。
* 复杂的变量--PHP支持标量、数组、关联数组等变量 , 这给用户提供了以支持其它的高级数据结构的坚实基础 。
* 图象处理--用户可以使用PHP动态的创建图象 。
* 更多的其它功能!
1.3 PHP需要花费多少钱java执行php代码块?
PHP是免费的 。所有的源码、文档都可以免费的复制、编译、打印和分发 。用户的任何一个用PHP编写的程序都属于用户自己,可以按照自己的意愿进行处理,而不需要付任何版税 。就PHP本身而言 , 用户可以无限制地发布自己编写的程序 。
然而,有着很充分的理由,PHP并不是彻底的“公共领域”代码 。如果PHP源码是完全的公共领域代码 , 很可能就有人对PHP的源码做很小的修改,然后编译并出售--换一句话说,从它的创作者中脱离出来 。但从另一方面说,如果不公布源码,很难使想使用它的用户感到放心 。
GNU通用公共许可是一种发布免费软件的方法,它可以避免其他人占有java执行php代码块你的劳动成果 。在符合GNU许可的条件下 , 源码可以自由地发布,并且任何一个人都可以使用,但是任何来源于此代码的程序必须以同样种类的许可方式发布 。换句话说 , 如果用户从任何GNU许可下的源码中得到代码而编写自己的程序,用户必须给任何想得到源码的人共布自己的源码 。
1.4 PHP语言可以嵌入HTML中
当使用者使用经典程序设计语言(如C或Pascal)编程时 , 所有的代码必须编译成一个可执行的文件,然后该可执行文件在运行时,为远程的Web浏览器而产生可显示的HTML标记 。但另一方面,PHP并不需要编译(至少不编译成可执行文件) 。使用者可以把自己的代码混合到HTML中 。例如,下面的代码将显示“Hello,world!”,PHP代码在下面以黑体字显示 。
HTML
HEADTITLETest/TITLE/HEAD
BODY
?PHP $string = 'world!'; ?
H1Hello,?php echo $string ?/H1
/BODY
/HTML
PHP应用程序服务器(本书的主要写作目的)是紧密集成到Apache Web服务器中的 , 可以在一个程序内同时调用它们两个 。当Web浏览器请求PHP Web页面的时候,Web服务器的PHP部分将被调用进行解释 。Web服务器在请求的Web页中寻找?PHP . . . ?标记,并按要求执行这些PHP代码 。
由PHP代码生成的输出将替代?PHP . . . ?标记 。例如,当PHP代码运行后,以前的Web页面将变成如下所示的内容:
HTML
HEADTITLETest/TITLE/HEAD
BODY
H1Hello,world!/H1
/BODY
/HTML
注意,所有的PHP代码都消失了,仅仅留下了HTML语句 。而由PHP代码生成的HTML语句在上例中以黑体的形式显示 。
1.5 PHP语言是在Web服务器端运行
当开发互联网应用程序时,很重要的一点是要清楚应用程序是在哪一端运行的 。PHP总是运行在服务器端 。不要嘲笑对这一点的强调 。在以后考虑对应用程序某些特性进行规划时,有的人可能就会在应用程序在哪里运行的这个问题上搞错 , 不要让自己也成为这些人中的一个 。
由于Java applets,ActiveX,或javascript 都是运行在客户端的Web浏览器中的 , 因此PHP不能直接和它们进行比较 。然而可以很容易的将这些语言与PHP相结合在一起,使用PHP可以很方便地生成所需要的任何HTML代码,当然也就能激活Java applets和ActiveX控件 , 还可以动态生成javascript语句 。当对互联网应用程序开发还很陌生的时候,这也许没有什么意义,但是在读完这本书后,这一切就会变得十分清晰的了 。
1.6 PHP无处不在
无处不在是常使用的充满激情的词语,到1999年7月,将有60万左右的Web站点使用PHP,1999年夏天有关Linux和开放代码运动的大发展很可能使PHP团体有突破性发展 。可以在站点上看到它的发展趋势图表 。
此外,PHP邮件列表每天能收到大约80个电子邮件 , 每个月能收到大约2500个电子邮件,这说明PHP是一个非常活跃的开发团体 。使用PHP的商业公司有以下几个,Mitsubishi Motors、Volvo、Red Hat Software、E*Trade、First USA Bank、the San Francisco Giants和San Diego Zoo等等 。
1.7 PHP和C或Java相似吗java执行php代码块?
PHP程序和C程序有略微相似的地方,这是由于PHP来源于C、Perl和Java 。一些对C语言来讲比较麻烦的方面(如处理字符串的技术),由于采用了和Perl相近的技术,在PHP中就不再是麻烦了 。PHP中也不包括Java中的一些面向对象特性 。
PHP能很好地处理某些低级的任务,如果代码需要运行的特别快,可以很方便的使用C为PHP程序编写模块 。
1.8 PHP比ColdFusion、Active Server Page或Java Server Page更好吗?
以流行的商议方式,我总是回答 , “可以是,也可以不是” 。
回答是 , 是由于它的费用(免费)以及可以通过邮件列表、IRC而在世界范围内有广泛的支持网络 。同时PHP还在不断地发展着,如果想要一个PHP现在没有的特性时,请等待几个月,就有人很快为PHP编程而加上此种特性 。
回答不是,是由于商业软件有比PHP更多的特性 。例如,Allaire's ColdFusion有一个已证实可靠的搜索引擎组件 。微软的Active Server Page技术提供了与Outlook、电子邮件和工作组程序相结合的能力 。Java Server Page让使用者可以使用互联网上的大量开放源码模块 。
1.9 总结
对于遍及互联网上的PHP,本章仅仅简要提到了它的一些特性,本章也介绍了当设计互联网应用程序时,PHP为什么是最好的编程工具之一的原因 。
求大神帮忙把java的代码转成 php代码public class Main{
public function __construct()
{
//如果是实例运行,添加此方法,创建即可运行
}
public static function main(){
for ($i=0;$i 10;$i){
$rand = mt_rand(0, 51);
echo $rand,PHP_EOL;
}
}
}
如何用PHP代码实现这个Java代码所实现的JavaAes类,用php实现方法:importjava.security.NoSuchAlgorithmException;importjava.security.SecureRandom;importjavax.crypto.Cipher;importjavax.crypto.KeyGenerator;importjavax.crypto.SecretKey;importjavax.crypto.spec.SecretKeySpec;publicclassAESSecurityUtil{privatestaticfinalStringAES="AES";privatestaticfinalStringCHARSET_NAME="utf-8";privatestaticSecretKeySpecgetKey(Stringpassword)throwsNoSuchAlgorithmException{KeyGeneratorkgen=KeyGenerator.getInstance(AES);SecureRandomrandom=SecureRandom.getInstance("SHA1PRNG");random.setSeed(password.getBytes());kgen.init(128,random);SecretKeysecretKey=kgen.generateKey();byte[]enCodeFormat=secretKey.getEncoded();SecretKeySpeckey=newSecretKeySpec(enCodeFormat,AES);returnkey;}publicstaticStringencode(Stringstr,Stringpassword){byte[]arr=encodeToArr(str,password);returnbyteArrToString(arr);}privatestaticbyte[]encodeToArr(Stringstr,Stringpassword){try{Ciphercipher=Cipher.getInstance(AES);byte[]byteContent=str.getBytes(CHARSET_NAME);cipher.init(Cipher.ENCRYPT_MODE,getKey(password));byte[]result=cipher.doFinal(byteContent);returnresult;}catch(Exceptione){e.printStackTrace();}returnnull;}publicstaticStringdecode(StringhexStr,Stringpassword){byte[]arr=string2ByteArr(hexStr);returndecode(arr,password);}privatestaticStringdecode(byte[]arr,Stringpassword){try{Ciphercipher=Cipher.getInstance(AES);cipher.init(Cipher.DECRYPT_MODE,getKey(password));byte[]result=cipher.doFinal(arr);returnnewString(result,CHARSET_NAME);}catch(Exceptione){e.printStackTrace();}returnnull;}privatestaticStringbyteArrToString(byte[]arr){StringBuffersb=newStringBuffer();for(inti=0;i
一段java代码转php代码,求高手utf8编码试试java执行php代码块:utf8_encode()
即java执行php代码块:
utf8_encode($stringToSign)
java执行php代码块的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java能写php、java执行php代码块的信息别忘了在本站进行查找喔 。

    推荐阅读