exec - Исполняет внешнюю программу
Вернуться к: Функции запуска программ
exec
(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.
Смотрите также
- system() - Выполняет внешнюю программу и отображает её вывод
- passthru() - Выполняет внешнюю программу и отображает необработанный вывод
- escapeshellcmd() - Экранирует метасимволы командной строки
- pcntl_exec() - Executes specified program in current process space
- backtick operator
Вернуться к: Функции запуска программ