簡體   English   中英

從不同目錄的php執行Java

[英]execute java from php from different directory

我有linux服務器(Debian)。 我在目錄(reza)中有Java程序(已編譯)。 我試圖從/ var / www並通過php腳本執行此Java程序。

$com=shell_exec('java /reza/z');

當以上述格式調用時,它將返回任何結果或執行Java程序。 當我以相同的調用格式在reza文件夾中調用一個php腳本時,它將返回正確的響應:

$com=shell_exec('php /reza/a.php');

知道如何使它正確工作嗎?

PS當從php從同一目錄調用java時,它返回正確的響應:

$com=shell_exec('java z');

Java文件也被編譯並包含類文件。

Java示例代碼為:

    import java.io.*;

public class z{

   public static void main(String args[])throws IOException{

      File file = new File("Hello1.txt");
      // creates the file
      file.createNewFile();
      // creates a FileWriter Object
      FileWriter writer = new FileWriter(file); 
      // Writes the content to the file
      writer.write("This\n is\n an\n example\n"); 
      writer.flush();
      writer.close();

      //Creates a FileReader Object
      FileReader fr = new FileReader(file); 
      char [] a = new char[50];
      fr.read(a); // reads the content to the array
      for(char c : a)
          System.out.print(c); //prints the characters one by one
      fr.close();
   }
}

問候,

終於解決了。 必須更改目標文件夾的權限並也啟用“寫入”。 謝謝大家的幫助。

使用類路徑開關:

$com=shell_exec('java -cp /reza z');

在命令中放置Java可執行文件的完整路徑(例如/ usr / bin / java)。 您可能還需要使用參數設置類路徑等。 請記住,Java是在Web服務器用戶的上下文中執行的,而不是您的個人登錄名,因此環境可能沒有使用相同值定義的相同變量,例如JRE_HOME,PATH等。

要找出具有shell exec的內容,請使用php env命令列出可用的環境變量。 我認為phpinfo()將為您提供相同的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM