Выполнить PHP-скрипт - PullRequest
       1

Выполнить PHP-скрипт

1 голос
/ 17 августа 2011

Я создаю приложение php.В сценарии есть вызов для выполнения файла JAR:

?php
exec('java -jar simulations/simulation.jar');
?>

Проблема состоит в том, что эта командная строка выполняет файл JAR:

user@ubuntu: php execSimulation.php

, но не вызов изстраница интернета.Вызов сделан AJAX, я что-то упустил?

<!-- 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>

Когда я пытаюсь напечатать только отправленный мною параметр, например, предупреждение показывает его, поэтому я уверен, что вызов достигает сервера, но я не знаю, почему баночкафайл не выполненЕсть идеи, пожалуйста?

Заранее спасибо.

РЕДАКТИРОВАТЬ

Трассировка ошибки:

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.

Ответы [ 3 ]

2 голосов
/ 17 августа 2011

Кажется, для работы вашего jar-сервера требуется X-сервер.

Невозможно подключиться к серверу окон X11, используя ': 0.0' в качестве значения переменной DISPLAY.

Когда вы запускаете его из командной строки, у вас работает X? Если вы это сделаете, это объяснит, почему он работает там, а не из PHP.

Вы можете попытаться «похитить» запущенную сессию X из PHP.

exec('DISPLAY=:0 java -jar simulations/simulation.jar');

Возможно, вам придется сначала запустить xhost +localhost (или xhost +) из командной строки, чтобы позволить пользователю PHP работать так же, как для подключения к X.

2 голосов
/ 17 августа 2011

В бессмертных словах Джейми Сэвиджа: «Есть проблема».

Java-программа, которую вы запускаете, пытается при инициализации добраться до вашего «сервера» X Windows (то есть экрана), который работает, когда вы работаете из командной строки, а не безголового веб-сервера. Поговорите с людьми, написавшими org.opensourcephysics.tools.TranslatorTool, о том, как отключить это (крайне нефункциональное) поведение.

0 голосов
/ 17 августа 2011

Используйте полный путь в exec (): базовые пути различаются между CLI SAPI и apache.

 <?php 
 exec('full/path/to/jar');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...