先說我認為最有可能的問題吧
請在後面加上這句exec("exit(0)");
這個是針對你指令里的 >
然後猜測下還有什麼可能的問題吧
usr/java/jdk1.6.0_23/bin/ 這個path是不是沒給access的許可權?可以試著把jar js文件復制到現在的目錄下,再試下看看問題是不是在這(不好意思,沒試過樓主這種寫法,java安裝好在哪裡用都是java就好了吧,為什麼特意給path呢)
順便糾正個小問題吧
$print_r($o);這個前面多了個$,還請樓主仔細檢查啊,不要最後發現是這么個粗心問題造成的
建議樓主試下
exec('java -version',$o);
print_r($o);
(因為我這里echo $JAVA_HOME是什麼也不顯示的..)
還有什麼呢
關於path還可以試下apache_lookup_uri
--------------------------------------------------------------------
那段我用的是給你看個例子,如果你用的話要改的...(不會直接用了吧orz)
你把yuicompressor-2.4.2.jar test.js 復制到現在的目錄下
代碼這樣
exec("java java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 -v test.js > packed.js",$output,$status);
exec("exit(0)");
//chmod("packed.js",0644);//如果你需要的話在把這句加上
echo "<h4 style='color:#CC0000'>Error</h4>\n",
join("\n",$output);
還有樓主你不仔細看回答啊$print_r($o);這句你多打了$,是錯的,快點從代碼里刪除吧....
Ⅱ php怎樣在客戶端用java檢驗用戶信息
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
</HEAD>
<script type="text/javascript" language="javascript">
function onYanZheng1()
{
//// alert(username);
name1=document.form1.text1.value
name2=document.form1.text2.value
var regx=/^\-?[0-9]*\.?[0-9]*$/g;
if(!isTrueName(name1)){
alert('只能輸入1-30個以字母開頭的字串!');
return false;
}
if(!isPasswd(name2)){
alert('校驗密碼:只能輸入6-20個字母、數字、下劃線!');
return false;
}
return true;
}
function isTrueName(s) //只能輸入1-30個以字母開頭的字串
{ var patrn=/^[a-zA-Z]{1,30}$/;
if (!patrn.exec(s)){
return false}else{
return true }
}
function isPasswd(s) ////校驗密碼:只能輸入6-20個字母、數字、下劃線
{ var patrn=/^(\w){6,20}$/;
if (!patrn.exec(s)) {
return false}else{
return true }}
</script>
<BODY>
<form method="post" name=form1>
<input name=text1 >
<input name=text2 >
<input type="button" name="button" value="提交" onclick='onYanZheng1()'>
</form>
</BODY>
</HTML>
我試過了,真接就可以用了,如果想改下驗證規則,可以把正則表達試換下就可以了,希望對你有幫助!
Ⅲ php exec調用java程序 寫文件不執行
在伺服器中的有一段代碼是通過調用jar包實現的:
shell_exec("java -jar $jar_file $confa $confb ")
剛開始的時候每天運行都很正常,可是最近php每次執行到這個函數的時候就被暫停了,一直卡在這里,不再向下面運行。
Ⅳ 關於php和java的問題,獲取返回值!
把java做成webservice服務介面,或者是一般的介面也可以,然後php調用介面地址就可以了啊。
Ⅳ php exec 運行import類java文件問題
想通過參數傳遞?
public class as4 {
public static void main(String[] args){
int n = Integer.parseInt(args[0]);
double factorial = 1;
for (int i=1;i<=n;i++){
factorial = factorial*i;
}
System.out.println("Factorial = " + factorial);
}
}
聽說exec不能用於客戶端?
這個是真的。
Ⅵ 請教一下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是用的相對路徑。不管是絕對還是相對,只要路徑對了就行了。
Ⅶ centos php exec java
用popen試試
$fp = popen('java -version', 'r');
$ret = '';
while (!feof($fp))
{
$ret .= fgets($fp);
}
pclose($fp);
echo $ret;
Ⅷ php exec("javac/java")問題
根據提示信息,你試一下下面的方法
1.配置操作系統的環境變數右擊我的電腦->屬性->高級選項卡->環境變數
配置系統環境變數的Path編輯它,給它加上一句
C:Javajdk1.6.0_21in(這是javac.exe文件在目錄);
這可以是解決javac不是內部或外部命令的問題;
2.配置環境變數classpath在最前面加一個.;