Table of Contents
Reply content:
Home Backend Development PHP Tutorial python - php calls shell command: exec('java -jar a.jar') does not execute.

python - php calls shell command: exec('java -jar a.jar') does not execute.

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

Use PHP's exec function to execute shell. Many commands can be executed, but there is a problem with executing java programs.
[testshell.php] is as follows:

1

2

3

4

5

<code><?php

$str="java -jar a.jar";

exec($str,$output,$retnruVal);

print_r($output);

?></code>

Copy after login
Copy after login

The java file is also very simple. It is a test file that outputs helloworld and writes it to the file.
In addition, I used php to directly execute this file, as follows, and it was successful without any problems:

1

<code>$ php testshell.php</code>

Copy after login
Copy after login

But when I execute this php file in the browser, there is no response.
At first I guessed it was a write permission issue, but I wrote another pythontest:

1

<code>file("output.txt").write("测试\n")</code>

Copy after login
Copy after login

Then testshell.php is changed to:

1

2

3

<code>$str="python a.py";

exec($str,$output,$retnruVal);

print_r($output);</code>

Copy after login
Copy after login

This is also successful, so I don’t know where the problem lies - please give me some advice.
Attached is the program a.java:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

<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>

Copy after login
Copy after login

I changed a.java and added an output. The result can be output, which means that System.out.println can be executed, but the subsequent code cannot be executed. It doesn’t seem to be a permissions issue.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<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>

Copy after login
Copy after login

Reply content:

Use PHP's exec function to execute shell. Many commands can be executed, but there is a problem with executing java programs.
[testshell.php] is as follows:

1

2

3

4

5

<code><?php

$str="java -jar a.jar";

exec($str,$output,$retnruVal);

print_r($output);

?></code>

Copy after login
Copy after login

The java file is also very simple. It is a test file that outputs helloworld and writes it to the file.
In addition, I used php to directly execute this file, as follows, and it was successful without any problems:

1

<code>$ php testshell.php</code>

Copy after login
Copy after login

But when I execute this php file in the browser, there is no response.
At first I guessed it was a write permission issue, but I wrote another pythontest:

1

<code>file("output.txt").write("测试\n")</code>

Copy after login
Copy after login

Then testshell.php is changed to:

1

2

3

<code>$str="python a.py";

exec($str,$output,$retnruVal);

print_r($output);</code>

Copy after login
Copy after login

This is also successful, so I don’t know where the problem lies - please give me some advice.
Attached is the program a.java:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

<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>

Copy after login
Copy after login

I changed a.java and added an output. The result can be output, which means that System.out.println can be executed, but the subsequent code cannot be executed. It doesn’t seem to be a permissions issue.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<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>

Copy after login
Copy after login

I don’t know if there is any specific return information, but from my inference, it has something to do with the file path.

Are the Java environment variables correct? Try executing with java full path.

Already solved. Permission issue. www-data is the default user without write file permissions. . . Tricked

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to download deepseek Xiaomi How to download deepseek Xiaomi Feb 19, 2025 pm 05:27 PM

How to download DeepSeek Xiaomi? Search for "DeepSeek" in the Xiaomi App Store. If it is not found, continue to step 2. Identify your needs (search files, data analysis), and find the corresponding tools (such as file managers, data analysis software) that include DeepSeek functions.

How do you ask him deepseek How do you ask him deepseek Feb 19, 2025 pm 04:42 PM

The key to using DeepSeek effectively is to ask questions clearly: express the questions directly and specifically. Provide specific details and background information. For complex inquiries, multiple angles and refute opinions are included. Focus on specific aspects, such as performance bottlenecks in code. Keep a critical thinking about the answers you get and make judgments based on your expertise.

How to search deepseek How to search deepseek Feb 19, 2025 pm 05:18 PM

Just use the search function that comes with DeepSeek. Its powerful semantic analysis algorithm can accurately understand the search intention and provide relevant information. However, for searches that are unpopular, latest information or problems that need to be considered, it is necessary to adjust keywords or use more specific descriptions, combine them with other real-time information sources, and understand that DeepSeek is just a tool that requires active, clear and refined search strategies.

How to program deepseek How to program deepseek Feb 19, 2025 pm 05:36 PM

DeepSeek is not a programming language, but a deep search concept. Implementing DeepSeek requires selection based on existing languages. For different application scenarios, it is necessary to choose the appropriate language and algorithms, and combine machine learning technology. Code quality, maintainability, and testing are crucial. Only by choosing the right programming language, algorithms and tools according to your needs and writing high-quality code can DeepSeek be successfully implemented.

How to use deepseek to settle accounts How to use deepseek to settle accounts Feb 19, 2025 pm 04:36 PM

Question: Is DeepSeek available for accounting? Answer: No, it is a data mining and analysis tool that can be used to analyze financial data, but it does not have the accounting record and report generation functions of accounting software. Using DeepSeek to analyze financial data requires writing code to process data with knowledge of data structures, algorithms, and DeepSeek APIs to consider potential problems (e.g. programming knowledge, learning curves, data quality)

How to access DeepSeekapi - DeepSeekapi access call tutorial How to access DeepSeekapi - DeepSeekapi access call tutorial Mar 12, 2025 pm 12:24 PM

Detailed explanation of DeepSeekAPI access and call: Quick Start Guide This article will guide you in detail how to access and call DeepSeekAPI, helping you easily use powerful AI models. Step 1: Get the API key to access the DeepSeek official website and click on the "Open Platform" in the upper right corner. You will get a certain number of free tokens (used to measure API usage). In the menu on the left, click "APIKeys" and then click "Create APIkey". Name your APIkey (for example, "test") and copy the generated key right away. Be sure to save this key properly, as it will only be displayed once

Major update of Pi Coin: Pi Bank is coming! Major update of Pi Coin: Pi Bank is coming! Mar 03, 2025 pm 06:18 PM

PiNetwork is about to launch PiBank, a revolutionary mobile banking platform! PiNetwork today released a major update on Elmahrosa (Face) PIMISRBank, referred to as PiBank, which perfectly integrates traditional banking services with PiNetwork cryptocurrency functions to realize the atomic exchange of fiat currencies and cryptocurrencies (supports the swap between fiat currencies such as the US dollar, euro, and Indonesian rupiah with cryptocurrencies such as PiCoin, USDT, and USDC). What is the charm of PiBank? Let's find out! PiBank's main functions: One-stop management of bank accounts and cryptocurrency assets. Support real-time transactions and adopt biospecies

Quantitative currency trading software Quantitative currency trading software Mar 19, 2025 pm 04:06 PM

This article explores the quantitative trading functions of the three major exchanges, Binance, OKX and Gate.io, aiming to help quantitative traders choose the right platform. The article first introduces the concepts, advantages and challenges of quantitative trading, and explains the functions that excellent quantitative trading software should have, such as API support, data sources, backtesting tools and risk control functions. Subsequently, the quantitative trading functions of the three exchanges were compared and analyzed in detail, pointing out their advantages and disadvantages respectively, and finally giving platform selection suggestions for quantitative traders of different levels of experience, and emphasizing the importance of risk assessment and strategic backtesting. Whether you are a novice or an experienced quantitative trader, this article will provide you with valuable reference

See all articles