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

时间:2012-11-13 20:23:59

标签: java php linux apache executable-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甚至没有开始被执行...

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

2 个答案:

答案 0 :(得分:4)

是的,这是许可问题。

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

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

编辑:然后您的脚本应如下所示:

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

答案 1 :(得分:0)

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