(PHP 4, PHP 5, PHP 7, PHP 8)
exec — Выполняет внешнюю программу
Функция 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
.