exec
(PHP 4, PHP 5, PHP 7, PHP 8)
exec — Выполняет внешнюю программу
Список параметров
command
-
Команда, которую выполнит функция.
output
-
Функция заполнит массив строками вывода команды,
если в списке аргументов передали переменную для параметра output
.
Функция не включит в массив пробельные символы наподобие \n
, которые завершают строки.
Обратите внимание: функция exec() добавит новые элементы в конец массива,
если массив уже содержит элементы.
Перед передачей элементов в функцию exec() на массиве вызывают языковую конструкцию
unset(), если добавлять новые элементы в конец массива не требуется.
result_code
-
Функция запишет в эту переменную статус возврата команды, которую выполнила система,
если аргументы передали и в параметр result_code
,
и в параметр output
.
Возвращаемые значения
Функция возвращает последнюю строку из результата команды.
Функция passthru() помогает, когда требуется
выполнить команду и вернуть сырые данные из команды
без посредников.
Функция возвращает false
, если возникла ошибка.
Функция вернёт данные вывода команды, которая выполнилась, только если установили
параметр output
.
Ошибки
Выдаётся ошибка уровня E_WARNING
,
если функция exec() не выполнила команду command
.
Функция выбрасывает исключение ValueError,
если параметр command
не указали или параметр содержит нулевые байты.
Примеры
Пример #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
.