【发布时间】: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 <name of your php script>看看会发生什么。如果有效,则意味着您很有可能确实是权限问题。 -
你可以试试
$command = 'cd output_folder && java -jar /full/path/to/myfile.jar'; -
1) var_dump($output); 说了什么?如果它什么也没告诉你,2)创建一个带有 java 调用的 shell 脚本,并将 stderr (使用 2> )输出到文件。从 php 调用脚本,然后检查文件中可能出现的 stderr 错误。 3) 确保 java 可以从您正在使用的目录中为您正在使用的用户调用。