首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行php脚本

执行php脚本
EN

Stack Overflow用户
提问于 2011-08-17 18:20:42
回答 3查看 590关注 0票数 1

我正在构建一个php应用程序。在脚本中,有一个调用来执行jar文件:

代码语言:javascript
复制
?php
exec('java -jar simulations/simulation.jar');
?>

问题是这个命令行执行jar文件:

代码语言:javascript
复制
user@ubuntu: php execSimulation.php

但不是网页上的电话。这个电话是阿贾克斯打的,我是不是遗漏了什么??

代码语言:javascript
复制
<!-- Script to execute the simulation -->
<script type="text/javascript" src="prototype.js"></script>
        <script>

            function sendRequest() {
                new Ajax.Request("ejecutarSimulacion.php", 
                    { 
                    method: 'post', 
                    postBody: 'name='+ $F('name'),
                    onComplete: showResponse 
                    });
                }

            function showResponse(req){
            alert(req.responseText);
            }
        </script>

<form id="test" onsubmit="return false;">
                                <input type="hidden" value="<?php echo $simulacion; ?>" name="name" id="name" >
                                <input type="submit" value="<?php echo $nombre; ?>" onClick="sendRequest()">
                            </form>

例如,当我试图只打印我发送的param时,警报会显示它,所以我确信调用已经到达服务器,但我不知道为什么jar文件没有执行。有什么想法吗?

提前谢谢。

编辑

错误跟踪:

代码语言:javascript
复制
No protocol specified
Exception in thread "main" java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
    at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
    at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:62)
    at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:178)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:142)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:186)
    at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82)
    at java.awt.Window.init(Window.java:385)
    at java.awt.Window.<init>(Window.java:438)
    at java.awt.Frame.<init>(Frame.java:419)
    at java.awt.Frame.<init>(Frame.java:384)
    at javax.swing.JFrame.<init>(JFrame.java:174)
    at org.opensourcephysics.tools.TranslatorTool.<init>(Unknown Source)
    at org.opensourcephysics.tools.TranslatorTool.<clinit>(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:186)
    at org.opensourcephysics.display.OSPRuntime.<clinit>(Unknown Source)
    at org.opensourcephysics.controls.OSPLog.fine(Unknown Source)
    at org.opensourcephysics.tools.ResourceLoader.addSearchPath(Unknown Source)
    at _users.tanqueCalentamiento.TanqueCalentamiento.<clinit>(TanqueCalentamiento.java:18)
Could not find the main class: _users.simulation.Simulation. Program will exit.
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-17 19:13:11

您的jar似乎需要一个X服务器才能运行。

无法使用“:0.0”作为显示变量的值连接到X11窗口服务器。

当您从命令行运行它时,是否有X在运行?如果您这样做了,这将解释为什么它在那里工作,而不是从PHP。

您可以尝试从PHP“劫持”正在运行的X会话。

代码语言:javascript
复制
exec('DISPLAY=:0 java -jar simulations/simulation.jar');

您可能必须首先从命令行运行xhost +localhost (或xhost +),以允许用户PHP作为连接到X的方式运行。

票数 2
EN

Stack Overflow用户

发布于 2011-08-17 19:13:33

用杰米·萨维奇( Jamie )不朽的话来说,“这是你的问题。”

您正在运行的Java程序试图在初始化时访问您的X Windows“服务器”(即屏幕),当您从命令行运行而不是从无头web服务器运行时,该程序可以工作。和写org.opensourcephysics.tools.TranslatorTool的人谈谈如何禁用这种(严重功能失调的)行为。

票数 2
EN

Stack Overflow用户

发布于 2011-08-17 18:24:32

在exec()中使用完整路径: CLI SAPI和apache路径之间的基本路径是不同的。

代码语言:javascript
复制
 <?php 
 exec('full/path/to/jar');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7097553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档