为什么exec('java -jar file.jar')不能在浏览器上运行,而是在命令行上工作?



我尝试从 php 文件运行一个 jar,如下所示:

exec("java -jar /home/florinbuda/NetBeansProjects/monkey1/dist/monkey1.jar", $result);          
print_r($result);

如果我从命令行运行它,它可以工作,例如:

$ php runner.php

但是如果我尝试通过http-localhost-server/runner加载它,它不起作用.php页面只是永远加载而不会给出任何错误。

在.jar文件中,我现在添加了一个简单的测试,如果 jar 甚至开始工作

public static void main(String[] args) {
    new File("/home/florinbuda/Desktop/xxx").mkdir();

正如你可以猜到的 - 当我调用 http-localhost-server/runner 时.php jar 甚至没有开始执行......

这是权利问题? 你有什么建议?

是的,这是权限问题。

您应该chmod.jar文件的父文件夹。

chmod 755 -R /home/florinbuda/NetBeansProjects/monkey1/dist/

编辑:然后你的脚本应该看起来像这样:

exec("PATH_TO/java -jar /home/florinbuda/NetBeansProjects/monkey1/dist/monkey1.jar");

bash 中的环境变量在 exec() 中并不相同。至少使用 java bin 的完整路径。您也可以尝试只运行/path/to/java 以查看正常输出是否正常工作。

最新更新