exec

(PHP 4, PHP 5, PHP 7)

execВыполнить внешнюю программу

Описание

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

Смотрите также

  • system() - Выполнить внешнюю программу и отобразить вывод
  • passthru() - Выполнить внешнюю программу и отобразить необработанный вывод
  • escapeshellcmd() - Экранировать метасимволы командной строки
  • pcntl_exec() - Запустить указанную программу в области текущего процесса
  • Оператор исполнения