目錄
回覆內容:
首頁 後端開發 php教程 python - php呼叫shell指令: exec('java -jar a.jar') 不執行。

python - php呼叫shell指令: exec('java -jar a.jar') 不執行。

Aug 04, 2016 am 09:19 AM
java php python

使用php的exec函數來執行shell, 很多指令都可以執行,唯獨執行java程式有問題。
[testshell.php]如下:

<code>&lt;?php
$str="java -jar a.jar";
exec($str,$output,$retnruVal);
print_r($output);
?&gt;</code>
登入後複製
登入後複製

java文件也很簡單,就是一個測試文件,輸出helloworld,並寫到文件。
另外我用php直接執行這個文件,如下,成功,沒有問題:

<code>$ php testshell.php</code>
登入後複製
登入後複製

但是在瀏覽器中執行這個php文件,沒有反應。
開始猜測是寫權限問題,但又寫了個python測驗:

<code>file("output.txt").write("测试\n")</code>
登入後複製
登入後複製

然後testshell.php改為:

<code>$str="python a.py";
exec($str,$output,$retnruVal);
print_r($output);</code>
登入後複製
登入後複製

這樣也是成功的, 所以就不知道問題處在哪裡了--請指教啊。
附 a.java的程式:

<code>import java.io.File;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileWriter;
public class a{
public static void main (String[] args) {

  try{
    File writename = new File("output.txt"); // 相对路径,如果没有则要建立一个新的output。txt文件
    writename.createNewFile(); // 创建新文件
    BufferedWriter out = new BufferedWriter(new FileWriter(writename));
    out.write("我会写入文件啦\r\n"); // \r\n即为换行
    out.flush(); // 把缓存区内容压入文件
    out.close(); // 最后记得关闭文件
  }catch(Exception e){
    e.printStackTrace();
  }
}
}</code>
登入後複製
登入後複製

a.java改了,加了一個輸出,結果可以輸出,也就是說能夠執行System.out.println但是後續的程式碼無法執行, 感覺也不是權限問題啊。

<code>public static void main (String[] args) {

  try{

    String a = "hello";
    System.out.println(a);

    File writename = new File("output.txt"); // 相对路径,如果没有则要建立一个新的output。txt文件
    writename.createNewFile(); // 创建新文件
    BufferedWriter out = new BufferedWriter(new FileWriter(writename));
    out.write("我会写入文件啦\r\n"); // \r\n即为换行
    out.flush(); // 把缓存区内容压入文件
    out.close(); // 最后记得关闭文件
  }catch(Exception e){
    e.printStackTrace();
  }
}</code>
登入後複製
登入後複製

回覆內容:

使用php的exec函數來執行shell, 很多指令都可以執行,唯獨執行java程式有問題。
[testshell.php]如下:

<code>&lt;?php
$str="java -jar a.jar";
exec($str,$output,$retnruVal);
print_r($output);
?&gt;</code>
登入後複製
登入後複製

java文件也很簡單,就是一個測試文件,輸出helloworld,並寫到文件。
另外我用php直接執行這個文件,如下,成功,沒有問題:

<code>$ php testshell.php</code>
登入後複製
登入後複製

但是在瀏覽器中執行這個php文件,沒有反應。
開始猜測是寫權限問題,但又寫了個python測驗:

<code>file("output.txt").write("测试\n")</code>
登入後複製
登入後複製

然後testshell.php改為:

<code>$str="python a.py";
exec($str,$output,$retnruVal);
print_r($output);</code>
登入後複製
登入後複製

這樣也是成功的, 所以就不知道問題處在哪裡了--請指教啊。
附 a.java的程式:

<code>import java.io.File;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileWriter;
public class a{
public static void main (String[] args) {

  try{
    File writename = new File("output.txt"); // 相对路径,如果没有则要建立一个新的output。txt文件
    writename.createNewFile(); // 创建新文件
    BufferedWriter out = new BufferedWriter(new FileWriter(writename));
    out.write("我会写入文件啦\r\n"); // \r\n即为换行
    out.flush(); // 把缓存区内容压入文件
    out.close(); // 最后记得关闭文件
  }catch(Exception e){
    e.printStackTrace();
  }
}
}</code>
登入後複製
登入後複製

a.java改了,加了一個輸出,結果可以輸出,也就是說能夠執行System.out.println但是後續的程式碼無法執行, 感覺也不是權限問題啊。

<code>public static void main (String[] args) {

  try{

    String a = "hello";
    System.out.println(a);

    File writename = new File("output.txt"); // 相对路径,如果没有则要建立一个新的output。txt文件
    writename.createNewFile(); // 创建新文件
    BufferedWriter out = new BufferedWriter(new FileWriter(writename));
    out.write("我会写入文件啦\r\n"); // \r\n即为换行
    out.flush(); // 把缓存区内容压入文件
    out.close(); // 最后记得关闭文件
  }catch(Exception e){
    e.printStackTrace();
  }
}</code>
登入後複製
登入後複製

不知道有沒有具體的回傳訊息,不過從我的推斷來說,與檔案路徑不無關係。

java的環境變數正確麼。 試試用java完整路徑執行。

已經解決. 權限問題。 www-data是預設使用者無寫檔案權限。 。 。坑了

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南

怎麼下載deepseek 小米 怎麼下載deepseek 小米 Feb 19, 2025 pm 05:27 PM

怎麼下載deepseek 小米

deepseek怎麼問他 deepseek怎麼問他 Feb 19, 2025 pm 04:42 PM

deepseek怎麼問他

deepseek該怎麼搜索 deepseek該怎麼搜索 Feb 19, 2025 pm 05:18 PM

deepseek該怎麼搜索

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

您如何在PHP中解析和處理HTML/XML?

deepseek怎麼編程 deepseek怎麼編程 Feb 19, 2025 pm 05:36 PM

deepseek怎麼編程

突破或從Java 8流返回? 突破或從Java 8流返回? Feb 07, 2025 pm 12:09 PM

突破或從Java 8流返回?

See all articles