array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'function.exec.php', 1 => 'exec', ), 'up' => array ( 0 => 'ref.exec.php', 1 => 'Функции запуска программ', ), 'prev' => array ( 0 => 'function.escapeshellcmd.php', 1 => 'escapeshellcmd', ), 'next' => array ( 0 => 'function.passthru.php', 1 => 'passthru', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/exec/functions/exec.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
exec — Выполнить внешнюю программу
exec() выполняет команду
command
.
command
Команда, которая будет исполнена.
output
Если параметр output
указан, то
массив будет заполнен строками вывода программы.
Завершающие пробелы, такие как \n
,
не будут включены в массив. Обратите внимание, что если массив уже содержит
какие-либо элементы, то exec() добавит новые элементы в конец массива.
Если же вы не хотите, чтобы функция добавляла новые элементы в конец, вызовите
unset() на этом массиве, прежде чем передать его в exec().
result_code
Если аргумент result_code
присутствует вместе с
output
, тогда статус возврата выполненной команды
будет записан в этой переменной.
Последняя строка из результата команды. Если требуется выполнить команду и получить все данные команды без какой-либо обработки, используйте функцию passthru().
Возвращает false
в случае возникновения ошибки.
Для получения результата выполнения команды, убедитесь, что параметр
output
инициализирован и используется.
Выдаёт ошибку уровня E_WARNING
, если функция exec()
не может выполнить команду command
.
Выбрасывает исключение ValueError, если параметр command
не указан или содержит нулевые байты.
Версия | Описание |
---|---|
8.0.0 |
Если параметр command не указан или содержит нулевые байты,
функция exec() теперь выбрасывает исключение ValueError;
ранее она выдавала ошибку уровня 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
.