exec

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

execExecute an external program

Опис

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

exec() executes the given command.

Параметри

command

The command that will be executed.

output

If the output argument is present, then the specified array will be filled with every line of output from the command. Trailing whitespace, such as \n, is not included in this array. Note that if the array already contains some elements, exec() will append to the end of the array. If you do not want the function to append elements, call unset() on the array before passing it to exec().

result_code

If the result_code argument is present along with the output argument, then the return status of the executed command will be written to this variable.

Значення, що повертаються

The last line from the result of the command. If you need to execute a command and have all the data from the command passed directly back without any interference, use the passthru() function.

Returns false on failure.

To get the output of the executed command, be sure to set and use the output parameter.

Помилки/виключення

Emits an E_WARNING if exec() is unable to execute the command.

Throws a ValueError if command is empty or contains null bytes.

Журнал змін

Версія Опис
8.0.0 If command is empty or contains null bytes, exec() now throws a ValueError. Previously it emitted an E_WARNING and returned false.

Приклади

Приклад #1 An exec() example

<?php
// outputs the username that owns the running php/httpd process
// (on a system with the "whoami" executable in the path)
$output=null;
$retval=null;
exec('whoami', $output, $retval);
echo
"Returned with status $retval and output:\n";
print_r($output);
?>

Поданий вище приклад виведе щось схоже на:

Returned with status 0 and output:
Array
(
    [0] => cmb
)

Примітки

Увага

Варто застосувати escapeshellarg() або escapeshellcmd() до даних, введених користувачами, щоб гарантувати, що користувачі не зможуть обманом змусити систему виконати довільні команди.

Зауваження:

Якщо програма запускається за допомогою цієї функції, то для продовження роботи у фоновому режимі її вивід повинен спрямовуватись у файл або інший вихідний потік. Недотримання цієї умови змусить PHP виконувати програму до її завершення.

Зауваження:

У Windows exec() спершу запуститься cmd.exe, щоб виконати команду. Для запуску зовнішньої програми без участі cmd.exe використовується proc_open() з опцією bypass_shell.

Прогляньте також