在阅读本网站上与我所遇到的完全相同的问题相关的一些帖子后,我发现他们都没有给我一个成功的结果:
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
我非常感谢对此提出的任何意见。
答案 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