(PHP 4, PHP 5, PHP 7)
exec — Выполнить внешнюю программу
$command
[, array &$output
[, int &$return_var
]] ) : string
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 зависнет вплоть до конца выполнения программы.
Замечание:
В Windows функция exec() стартует cmd.exe для запуска команды. Если вы хотите запустить внешнюю программу без запуска cmd.exe, то используйте функцию proc_open() с установленной опцией
bypass_shell
.
Замечание: В случае работы в безопасном режиме, вы можете запускать что-либо только в пределах safe_mode_exec_dir. В настоящее время по практическим причинам запрещено использование .. в качестве компонента пути к исполняемому файлу.
В случае работы в безопасном режиме, строка с командой экранируется с помощью escapeshellcmd(). Таким образом echo y | echo x становится echo y \| echo x.