exec

(PHP 4, PHP 5, PHP 7, PHP 8)

execВыполняет внешнюю программу

Описание

exec(string $command, array &$output = null, int &$result_code = null): string|false

Функция exec() выполняет команду command.

Список параметров

command

Команда, которую выполнит функция.

output

Если параметр output указали, функция заполнит массив строками вывода программы. Функция не включит в массив завершающие пробельные символы наподобие \n. Обратите внимание: если массив уже содержит элементы, функция exec() добавит новые элементы в конец массива. Если же добавления новых элементов в конец массива не требуется, перед передачей элементов в функцию exec() на массиве вызывают функцию unset().

result_code

Функция запишет в эту переменную статус возврата команды, которую выполнила система, если аргументы передали и в параметр result_code, и в параметр output.

Возвращаемые значения

Последняя строка из результата команды. Если требуется выполнить команду и получить все данные команды без обработки, вызывают функцию passthru().

Функция возвращает false, если возникла ошибка.

Чтобы получить результат выполнения команды, убедитесь, что параметр output инициализирован и используется.

Ошибки

Функция выдаёт ошибку уровня E_WARNING, если функция exec() не может выполнить команду command.

Функция выбрасывает исключение ValueError, если параметр command не указали или параметр содержит нулевые байты.

Список изменений

Версия Описание
8.0.0 Теперь функция exec() выбрасывает исключение ValueError, если параметр command не указали или параметр содержит нулевые байты; раньше функция выдавала ошибку уровня E_WARNING и возвращала false.

Примеры

Пример #1 Пример использования функции exec()

<?php

// Выводит имя пользователя, от имени которого запустили процесс php/httpd
// (применимо к системам с командой whoami в системном пути)
$output = null;
$retval = null;
exec('whoami', $output, $retval);
echo
"Команда вернёт статус $retval и значение:\n";
print_r($output);

?>

Вывод приведённого примера будет похож на:

Команда вернёт статус 0 и значение:
Array
(
    [0] => cmb
)

Примечания

Внимание

Если нужно передавать функции пользовательские данные, вызывают функции escapeshellarg() или escapeshellcmd(), чтобы пользователи не смогли обмануть систему, запустив произвольную команду.

Замечание:

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

Замечание:

В Windows функция exec() для запуска команды запускает командную строку cmd.exe. Если нужно запустить внешнюю программу без запуска командной строки cmd.exe, вызывают функцию proc_open() с установленной опцией bypass_shell.

Смотрите также

  • system() - Выполняет внешнюю программу и отображает вывод
  • passthru() - Выполняет внешнюю программу и отображает необработанный вывод
  • escapeshellcmd() - Экранирует метасимволы командной строки
  • pcntl_exec() - Запустить указанную программу в области текущего процесса
  • Оператор исполнения