Неожиданный вывод через shell_exec

0

Я хочу написать фоновое задание. поэтому я пишу базовый скрипт для просмотра работы shell_exec. Скрипт выглядит следующим образом:

<?php
$op = shell_exec("php -v");
echo $op;
echo "back to the test.php";
?>

Выходом должна быть информация о версии php, но она выводит следующий неожиданный вывод:

back to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.phpback to the test.php

он печатает мои текущие страницы в 59-60 раз, а иногда и с content-type:text/html Я пытался использовать другой файл php файла, тот же

Затем я попытался с помощью команд linux, таких как date, ls, он отлично работает. Пожалуйста, помогите мне разобраться в этой проблеме. Я не мог понять, что не так?

Я также пробовал абсолютные пути к php, но не имел никакой разницы, а также использовал другие функции php, такие как system, exec и т.д.

Редактирование Примечание. Я изменил функцию exec на shell_exec, потому что у меня есть место для размещения на диске. Результат, который я отобразил ниже, - from shell_exec

UPDATE Я не получил решение проблемы, но получил причину проблемы, в скрипте нет ничего из-за сервера. Я пишу в центр поддержки сервера, но не получаю ответа. Поэтому я думаю, что этот вопрос закрыт

Теги:
exec
background-process
shell-exec

2 ответа

0
Лучший ответ

Я думаю, что exec и эти функции отключены в вашем php.ini. Вы можете проверить это

if(function_exists('shell_exec')) {
    echo "shell_exec is enabled";
} else {
    echo "shell_exec is disabled";
}

Откройте php.ini и перейдите в раздел disable_functions.

Если в списке указан shell_exec, удалите его.

Затем перезапустите обработчик apache/php.

Также, если включен Безопасный режим, эта функция недоступна. Вам нужно отключить его.

  • 0
    Я получаю, что shell_exec включен
  • 0
    и сэр, если функция не существует, она должна вызвать ошибочный вызов неопределенной функции ...
Показать ещё 1 комментарий
0

Синтаксис для функции exec

string exec ( string $command [, array &$output [, int &$return_var ]] )

Таким образом, это второй аргумент $ output, который будет заполняться выводом команды. Тем не менее он вернет массив не в качестве строки. Вам нужно разобрать эти данные, чтобы получить версию.

exec("/usr/bin/php -v", $out);
print_r($out);

Также я предлагаю использовать полный путь для php в функции exec.

  • 0
    спасибо @ kuldeep.kamboj, но он не работает выше того же выхода, но в формате массива
  • 0
    Да, как я уже сказал, это будет выходной массив. Вам нужно проанализировать первый индекс массива (или другой, когда вы проверяете массив) только для получения версии.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню