Исполняет внешнюю программу


(PHP 4, PHP 5)

execИсполняет внешнюю программу

Описание

string exec ( string $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