Команда PHP exec () работает безупречно в коде, но не при вызове AJAX - PullRequest
0 голосов
/ 16 мая 2019

Эта команда прекрасно работает, если я вызываю ее во время выполнения страницы

        exec('run.exe -something', $response, $status);

Но у меня есть кнопка на странице, которая выполняет ту же команду через AJAX:

                // Attempt a call to change the password
            $.ajax({
                url: 'actions/runcommand.php',
                type: 'POST',
                data: { 
                    cid: cid, 
                },
                dataType: 'json',
                success: function(msg)
                {
                    if (ajaxErr(msg) return;

                    // Show success message
                    showMsg('success!');

                },
                error: function(jqXHR, textStatus, errorThrown){ajaxFail(jqXHR, textStatus, errorThrown)}
            });                     

Я проверил, что обе команды выполняют буквально одну и ту же строку, независимо от того, делаю ли я это в своем коде или через AJAX, но инициированная AJAX возвращает код ошибки вместо функционирования. Значение status равно 1, что является общей ошибкой, поэтому мне нечем продолжать.

Я оглянулся и нашел один похожий пост, но они решили его, удалив https из команды ajax. Если я это сделаю, браузер блокирует его страшными сообщениями.

Это работает на локальном компьютере, который пытается HTTPS, но терпит неудачу, потому что это самоподписанный сертификат или что-то в этом роде. Я отключил перенаправление https для сайта, но это ничего не изменило. Не уверен, чем он недоволен ... пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Ладно, ребята, в этом были все признаки ошибки с головой, и вот что это было. Я оставляю это здесь для потомков, потому что это - легкая ошибка, и я видел, что другие люди задают подобные вопросы без хорошего ответа.

РЕШЕНИЕ состояло в том, что мои AJAX-файлы находились в SUBDIRECTORY, и это означает, что, когда они выполняли команду, выход, который пытался экспортировать в subdir корня, пытался найти этот subdir в ANOTHER SUBDIR. Sheesh!

0 голосов
/ 16 мая 2019
if (ajaxErr(msg) return;

Обработка ошибок не должна выполняться в функции обратного вызова success. Вы можете удалить это или изменить то, что делает эта функция.

Если вы запрашиваете URL из другого каталога, убедитесь, что ваш параметр URL использует косую черту для корневого каталога:

url: '/actions/runcommand.php',

Попробуйте это и посмотрите, есть ли еще общая ошибка:

$.ajax({
    url: '/actions/runcommand.php',
    type: 'POST',
    data: { 
        cid: cid, 
    },
    dataType: 'json',
        success: function(data, status) {
        console.log(data);
        console.log(status);
        showMsg('success!');
    },
    error: function(jqXHR, textStatus, errorThrown) {
        ajaxFail(jqXHR, textStatus, errorThrown)
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...