(PHP 4, PHP 5, PHP 7)
exec — Исполняет внешнюю программу
$command
[, array &$output
[, int &$return_var
]] )
exec() исполняет команду
command
.
command
Команда (имя программы с аргументами - прим.пер.), которая будет исполнена.
output
Если параметр output
указан, то
массив будет заполнен строками вывода программы.
Завершающие пробелы, такие как \n (перевод строки - прим.пер.),
включены в массив не будут. Обратите внимание, что если массив уже содержит
какие-либо элементы перед вызовом функции exec(), то
вывод команды будет дописан в конец массива. Если
же вы не хотите дополнять предыдущее содержимое массива, следует вызвать
функцию unset() с именем массива в качестве аргумента
перед его передачей в качестве аргумента функции exec().
return_var
Если заданы оба параметра return_var
и
output
, то при выходе эта
переменная будет содержать статус завершения внешней программы.
Последняя строка вывода при исполнении заданной команды. Если требуется исполнить команду и получить все данные программы обратно без какой-либо обработки, следует использовать функцию passthru().
Для получения вывода исполняемой программы, убедитесь, что параметр
output
инициализирован и используется.
Пример #1 Пример функции exec()
<?php
// выводит имя пользователя, от имени которого запущен процесс php/httpd
// (применимо к системам с командой "whoami" в системном пути)
echo exec('whoami');
?>
Если вы собираетесь передавать функции пользовательские данные, используйте функции escapeshellarg() или escapeshellcmd() для того, чтобы пользователи не смогли обмануть систему, запустив произвольную команду.
Замечание:
Если вы собираетесь использовать эту функцию в программе, работающей в качестве демона, убедитесь, что стандартный вывод функции направлен в файл или другой поток, в противном случае PHP зависнет вплоть до конца выполнения программы.
Замечание: В случае работы в безопасном режиме, вы можете запускать что-либо только в пределах safe_mode_exec_dir. В настоящее время по практическим причинам запрещено использование .. в качестве компонента пути к исполняемому файлу.
В случае работы в безопасном режиме, строка с командой экранируется с помощью escapeshellcmd(). Таким образом echo y | echo x становится echo y \| echo x.