【问题标题】:How to execute a java -jar file using PHP, and load a file created by the .jar to the server?如何使用 PHP 执行 java -jar 文件,并将 .jar 创建的文件加载到服务器?
【发布时间】:2016-07-07 09:19:14
【问题描述】:

我正在尝试使用 exec() 命令从 PHP 脚本执行 .jar 文件,更准确地说是使用:

<?php

    $command = 'java -jar myfile.jar';

    exec( $command, $output);

?>

php 脚本和 jar 都在服务器上的同一目录中。 myfile.jar 生成一个 excel 电子表格,我希望这个电子表格创建或存储在服务器上的同一目录或另一个目录中。当我在我的电脑终端执行 myfile.jar 时,程序运行正常并将文件输出到 .jar 所在的目录。

有什么想法吗?

最好的问候。

【问题讨论】:

  • 这很可能是服务器(Apache?)实际上不允许运行 java 的权限问题,或者 java 脚本没有写入权限来写入文件。尝试通过 cli 自己运行 php 脚本,输入 php -q &lt;name of your php script&gt; 看看会发生什么。如果有效,则意味着您很有可能确实是权限问题。
  • 你可以试试$command = 'cd output_folder &amp;&amp; java -jar /full/path/to/myfile.jar';
  • 1) var_dump($output); 说了什么?如果它什么也没告诉你,2)创建一个带有 java 调用的 shell 脚本,并将 stderr (使用 2> )输出到文件。从 php 调用脚本,然后检查文件中可能出现的 stderr 错误。 3) 确保 java 可以从您正在使用的目录中为您正在使用的用户调用。

标签: java php mysql jar server


【解决方案1】:

如果我理解正确,您想执行 myfile.jar 文件,该文件返回一些数据并将其保存到文件中?如果不需要编辑数据,可以使用:

exec ( 'java -jar myfile.jar > output.xml' );

【讨论】:

  • 这行得通,我可以从 output.xml 中读取它被致命错误截断。现在 java 程序完成了它的运行,那里没有问题。但是,正在创建 excel 文件,结果为空。我怀疑这与 java 代码用于生成电子表格的 FileOutputStream 有关。你能指出我正确的方向吗?
  • 您好,Aerials,我在这里找到了一些关于您的问题的信息:stackoverflow.com/questions/3789691/…
【解决方案2】:

好的,所以我在 Windows 上安装了 PHP,并且正在使用 EasyPHP 进行测试,就好像我在自己的计算机上安装了服务器一样。 php 代码工作正常,但从 $output 变量我可以注意到程序突然给出了一个致命错误。 我设法解密这个错误是由于 PHP 运行脚本的时间限制造成的。 我用了 set_time_limit(0);并纠正了这一点。现在java程序完成了它的运行,没有问题。 但是,正在创建 excel 文件,结果为空。我怀疑这与 java 代码用来生成电子表格的 FileOutputStream 有关。 你能为我指出正确的方向吗 ?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-23
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2017-09-21
    • 2013-12-26
    相关资源
    最近更新 更多