


python - php calls shell command: exec('java -jar a.jar') does not execute.
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:
<code><?php $str="java -jar a.jar"; exec($str,$output,$retnruVal); print_r($output); ?></code>
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:
<code>$ php testshell.php</code>
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 python
test:
<code>file("output.txt").write("测试\n")</code>
Then testshell.php is changed to:
<code>$str="python a.py"; exec($str,$output,$retnruVal); print_r($output);</code>
This is also successful, so I don’t know where the problem lies - please give me some advice.
Attached is the program 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>
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.
<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>
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:
<code><?php $str="java -jar a.jar"; exec($str,$output,$retnruVal); print_r($output); ?></code>
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:
<code>$ php testshell.php</code>
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 python
test:
<code>file("output.txt").write("测试\n")</code>
Then testshell.php is changed to:
<code>$str="python a.py"; exec($str,$output,$retnruVal); print_r($output);</code>
This is also successful, so I don’t know where the problem lies - please give me some advice.
Attached is the program 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>
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.
<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>
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

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.

PHP is suitable for web development and rapid prototyping, and Python is suitable for data science and machine learning. 1.PHP is used for dynamic web development, with simple syntax and suitable for rapid development. 2. Python has concise syntax, is suitable for multiple fields, and has a strong library ecosystem.

PHP originated in 1994 and was developed by RasmusLerdorf. It was originally used to track website visitors and gradually evolved into a server-side scripting language and was widely used in web development. Python was developed by Guidovan Rossum in the late 1980s and was first released in 1991. It emphasizes code readability and simplicity, and is suitable for scientific computing, data analysis and other fields.

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP is suitable for web development and content management systems, and Python is suitable for data science, machine learning and automation scripts. 1.PHP performs well in building fast and scalable websites and applications and is commonly used in CMS such as WordPress. 2. Python has performed outstandingly in the fields of data science and machine learning, with rich libraries such as NumPy and TensorFlow.

What’s still popular is the ease of use, flexibility and a strong ecosystem. 1) Ease of use and simple syntax make it the first choice for beginners. 2) Closely integrated with web development, excellent interaction with HTTP requests and database. 3) The huge ecosystem provides a wealth of tools and libraries. 4) Active community and open source nature adapts them to new needs and technology trends.

Golang is better than Python in terms of performance and scalability. 1) Golang's compilation-type characteristics and efficient concurrency model make it perform well in high concurrency scenarios. 2) Python, as an interpreted language, executes slowly, but can optimize performance through tools such as Cython.

Python is easier to learn and use, while C is more powerful but complex. 1. Python syntax is concise and suitable for beginners. Dynamic typing and automatic memory management make it easy to use, but may cause runtime errors. 2.C provides low-level control and advanced features, suitable for high-performance applications, but has a high learning threshold and requires manual memory and type safety management.
