(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 )
Команду экранируют функцией escapeshellcmd(), а отдельные аргументы команды функцией escapeshellarg(), когда разрешают передавать в функцию пользовательские данные, чтобы пользователи обманом не заставили систему выполнить произвольные команды.
Замечание:
При запуске программы с этой функцией вывод программы перенаправляют в файл или другой поток вывода, чтобы программа продолжала работать в фоновом режиме. PHP зависнет до завершения выполнения программы, если не перенаправить вывод.
Замечание:
В Windows функция exec() запускает командную оболочку cmd.exe, чтобы запустить команду. Внешнюю программу без запуска командной оболочки cmd.exe запускают вызовом функцию proc_open() с опцией
bypass_shell
.