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

# exec

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

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

### Описание

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

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

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

`command`

  Команда, которую выполнит функция.

`output`

  Функция заполнит массив строками вывода команды, если в списке аргументов передали переменную для параметра `output`. Функция не включит в массив пробельные символы наподобие `\n`, которые завершают строки. Обратите внимание: функция exec() добавит новые элементы в конец массива, если массив уже содержит элементы. Перед передачей элементов в функцию exec() на массиве вызывают языковую конструкцию unset(), если добавлять новые элементы в конец массива не требуется.

`result_code`

  Функция запишет в эту переменную статус возврата команды, которую выполнила система, если аргументы передали и в параметр `result_code`, и в параметр `output`.

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

Функция возвращает последнюю строку из результата команды. Функция passthru() помогает, когда требуется выполнить команду и вернуть сырые данные из команды без посредников.

Функция возвращает `false`, если возникла ошибка.

Функция вернёт данные вывода команды, которая выполнилась, только если установили параметр `output`.

### Ошибки

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

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

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

Версия | Описание
--- | ---
8.0.0 | Теперь функция exec() выбрасывает исключение ValueError, если параметр `command` не указали или параметр содержит нулевые байты; раньше функция выдавала ошибку уровня `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
    )

### Примечания

Внимание

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

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

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

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

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

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open