如何使用shell_exec()函数从PHP页面执行Java命令?

时间:2019-06-12 23:47:55

标签: java nginx ubuntu-18.04 laravel-5.7 php-7.2

我正在尝试使用功能shell_exec()从PHP页面运行Java程序,问题是总是返回空响应。运行以下命令时:ls,whoami,该命令有效。我认为这与为www-data用户授予访问权限有关,但是我仍然找不到解决方法。

我尝试使用命令 sudo visudo 修改文件 / etc / sudoers ,以便将应该授予访问权限的下一行添加到文件末尾执行Java命令:

www-data ALL = NOPASSWD:/ usr / lib / jvm / java-8-openjdk-amd64 / jre / bin / java

并尝试了这一点:

www-data ALL = NOPASSWD:/ usr / bin / java

我正在使用下一个代码从php页面调用Java命令:

$ result = shell_exec('java -version');

echo $ result;

我希望已调用命令的输出,但是实际输出为空。

提前谢谢。

3 个答案:

答案 0 :(得分:0)

尝试此代码:

exec('java -version '.' 2>&1', $result);
var_dump($result);

参考:https://medium.com/@jnheo/setting-up-a-web-service-php-to-spit-out-results-from-a-jar-file-213667eb008a

答案 1 :(得分:0)

我刚刚测试过并且可以正常工作

O(n)

参考:In the shell, what does " 2>&1 " mean?

答案 2 :(得分:0)

这可能有用。

echo shell_exec("echo " . $command_to_exec . " > myfile.java && javac myfile.java && java myfile.java");

仅执行一行Java代码。