exec

(PHP 4, PHP 5, PHP 7, PHP 8)

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

Описание

exec(string$command, array&$output = null, int&$result_code = null): string|false

exec() выполняет команду command.

Список параметров

command

Команда, которая будет исполнена.

output

Если параметр output указан, то массив будет заполнен строками вывода программы. Завершающие пробелы, такие как \n, не будут включены в массив. Обратите внимание, что если массив уже содержит какие-либо элементы, то exec() добавит новые элементы в конец массива. Если же вы не хотите, чтобы функция добавляла новые элементы в конец, вызовите unset() на этом массиве, прежде чем передать его в exec().

result_code

Если аргумент result_code присутствует вместе с output, тогда статус возврата выполненной команды будет записан в этой переменной.

Возвращаемые значения

Последняя строка из результата команды. Если требуется выполнить команду и получить все данные команды без какой-либо обработки, используйте функцию passthru().

Возвращает false в случае возникновения ошибки.

Для получения результата выполнения команды, убедитесь, что параметр output инициализирован и используется.

Ошибки

Выдаёт ошибку уровня E_WARNING, если функция exec() не может выполнить команду command.

Выбрасывает исключение ValueError, если параметр command не указан или содержит нулевые байты.

Список изменений

ВерсияОписание
8.0.0 Если параметр command не указан или содержит нулевые байты, функция exec() теперь выбрасывает исключение ValueError; ранее она выдавала ошибку уровня E_WARNING и возвращала false.

Примеры

Пример #1 Пример функции exec()

<?php
// выводит имя пользователя, от имени которого запущен процесс php/httpd
// (применимо к системам с командой "whoami" в системном пути)
$output=null;
$retval=null;
exec('whoami', $output, $retval);
echo
"Вернёт статус $retval и значение:\n";
print_r($output);
?>

Вывод приведённого примера будет похож на:

Вернёт статус 0 и значение: Array ( [0] => cmb )

Примечания

Внимание

Если нужно передавать функции пользовательские данные, вызывают функции escapeshellarg() или escapeshellcmd(), чтобы пользователи не смогли обмануть систему, запустив произвольную команду.

Замечание:

Если нужно вызвать эту функцию в программе, работающей в качестве демона, проверяют, что стандартный вывод функции направлен в файл или другой поток, иначе PHP зависнет вплоть до конца выполнения программы.

Замечание:

В Windows функция exec() для запуска команды запускает командную строку cmd.exe. Если нужно запустить внешнюю программу без запуска командной строки cmd.exe, вызывают функцию proc_open() с установленной опцией bypass_shell.

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

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