试图从PHP运行一个jar

时间:2014-08-10 17:41:56

标签: php jar

在阅读本网站上与我所遇到的完全相同的问题相关的一些帖子后,我发现他们都没有给我一个成功的结果:

How to run a jar from a web server using PHP

Run Java class file from PHP script on a website

why exec('java -jar file.jar') dont work on browser but works on command line?

我使用的是64位的Windows Server 2008 R2数据中心,它是来自AWS的EC2实例。 我用来在php文件中运行我的jar的命令是exec,它适用于任何phyton脚本和普通的.exe程序。但是当谈到一个罐子时,它什么也没做。

这是我的代码(我的jar需要5个参数):

$script = "java -jar scripts/IDW.jar 5 none 2 values_grid values";      
$result = exec($script, $output);
if ($result) {
    print_r($output);           
}
else {
    echo "Failed";
}
echo "<br/>Result: ". $result;

我的结果是:

Failed
Result:

当我在控制台上运行jar时,它运行完美,但不是来自PHP,这意味着我在上面的Php代码中传递了正确的参数值。

Java版本:1.7.0_51和PHP版本:5.4.26

我非常感谢对此提出的任何意见。

3 个答案:

答案 0 :(得分:1)

您也可以查看shell_exec,system()和其他函数pctl函数。这些功能可能被禁用,因此在执行检查之前,您也可以使用此功能

function execInBackground($cmd) { 
    if (substr(php_uname(), 0, 7) == "Windows"){ 
        pclose(popen("start /B ". $cmd, "r"));  
    } 
    else { 
        exec($cmd . " > /dev/null &");   
    } 
} 

更多细节here

答案 1 :(得分:0)

你必须做这样的事情:

//REPLACE THIS PATH WITH THE REAL JAVA PATH
$handle = popen(`"C:\\Program Files (x86)\\Java\\jre7\\bin\\java.exe arguments"`, "r"));
//You can read with $read = fread($handle, 2096)
pclose($handle);

exec不适用于Windows(对于&#34;外部&#34;可执行文件),在大多数情况下,您必须提供Java的完整路径。

答案 2 :(得分:0)

这不是一个直接的答案,但如果从Php调用java在任何情况下都不起作用,您也可以从Python脚本运行jar文件。我的意思是Php - &gt; Python - &gt;广口瓶中。

从Php调用Python脚本总是对我有用。

这篇文章过去曾帮助过我:

Python: How can I execute a jar file through a python script