从PHP执行javajar文件
不要对我唠叨,因为我在寻找答案时,当然已经找到了关于这个话题的多条线索。然而,我的问题似乎有所不同,因为我根本没有得到exec()调用的任何响应。以下是一些信息:从PHP执行javajar文件,java,php,exec,Java,Php,Exec,不要对我唠叨,因为我在寻找答案时,当然已经找到了关于这个话题的多条线索。然而,我的问题似乎有所不同,因为我根本没有得到exec()调用的任何响应。以下是一些信息: 我在MacOS上运行Apache2.2.22上的PHP5.4.7,并尝试从Java1.6.035运行jar文件 我可以执行简单的命令,如“ls-l”、“which java”或“pwd”,但任何调用java-even“/usr/bin/java-version”的尝试都会失败,没有任何响应;PHP脚本在exec()调用后停止丢弃任何
- 我在MacOS上运行Apache2.2.22上的PHP5.4.7,并尝试从Java1.6.035运行jar文件
- 我可以执行简单的命令,如“ls-l”、“which java”或“pwd”,但任何调用java-even“/usr/bin/java-version”的尝试都会失败,没有任何响应;PHP脚本在exec()调用后停止丢弃任何其他命令
- 我没有从脚本本身或任何错误日志中获得任何输出
- 我尝试过exec,shell_exec,系统,但没有成功
- 我确保java调用的每一部分,包括二进制文件、jar文件等,都是存在的,可以通过绝对路径访问;当然,命令在命令行上运行没有任何问题
- 调用本身看起来像这样“/usr/bin/java-Djava.awt.headless=true-jar/Users/twolff/Projects//bin/java/net.adternity.utils.xml2xls/dist/net.adternity.utils.xml2xls.jar--input=“/private/tmp/report_rUEsDe.xml”-output=“/private/tmp/report_7o1lFb.xls”
- 我检查了PHP配置,但没有发现任何错误(例如禁用函数、安全模式等)
- 我没有运行带有DYLIB环境变量问题的MAMP
try {
$output = "";
$return_val = 0;
echo exec('/usr/bin/java -Djava.awt.headless=true -jar /Users/twolff/Projects/<project_name>/bin/java/net.adternity.utils.xml2xls/dist/net.adternity.utils.xml2xls.jar --input="/private/tmp/report_rUEsDe.xml" --output="/private/tmp/report_7o1lFb.xls"', $output, $return_val);
echo "<br/>";
echo serialize($output);
echo "<br/>";
echo $return_val;
echo "<br/>";
} catch(Exception $e) {
echo $e->getMessage();
echo "<br/>";
}
echo "DONE";
尝试运行Java应用程序不会返回任何内容,浏览器不会执行任何操作。没有输出,没有错误日志
谢谢你调查这件事
Tobias.是jar文件的路径,右键为-jar/Users/twolff/Projects/。。。是否正确?是否尝试过将java命令包装到shell脚本中?添加
2>&1
以查看任何控制台错误。否则,这是一个系统配置问题,例如,Web服务器用户被限制不在其他地方运行可执行文件。这是权限问题吗?当您在命令行中执行它时,您的运行方式是什么?PHP可能没有与root相同的权限,这可能是您在命令行中运行的权限。谢谢您的快速回答。是有意的,很抱歉没有透露这一部分:-)我将尝试shell脚本以及控制台错误。jar文件的路径正确吗,-jar/Users/twolff/Projects/。。。是否正确?是否尝试过将java命令包装到shell脚本中?添加2>&1
以查看任何控制台错误。否则,这是一个系统配置问题,例如,Web服务器用户被限制不在其他地方运行可执行文件。这是权限问题吗?当您在命令行中执行它时,您的运行方式是什么?PHP可能没有与root相同的权限,这可能是您在命令行中运行的权限。谢谢您的快速回答。我是故意的,很抱歉没有透露这篇文章:-)我将尝试shell脚本以及控制台错误。
/usr/bin/java
a:1:{i:0;s:13:"/usr/bin/java";}
0
DONE