exec
(PHP 4, PHP 5, PHP 7)
exec — Выполнить внешнюю программу
Описание
$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
инициализирован и используется.
Примеры
Пример #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() - Запустить указанную программу в области текущего процесса
- Оператор исполнения