(PHP 4, PHP 5, PHP 7, PHP 8)
system — Выполняет внешнюю программу и отображает вывод
Функция system() аналогична C-версии функции
в том, что выполняет команду command
и выводит результат.
Вызов функции system() также пытается автоматически сбросить (отправить) буфер вывода веб-сервера после каждой строки вывода, если PHP работает как модуль сервера.
Функция passthru() помогает, когда требуется выполнить команду и вернуть сырые данные из команды без посредников.
command
Команда, которую выполнит функция.
result_code
Функция запишет в переменную код статуса возврата команды, которую выполнила,
если в аргументе result_code
передали переменную.
В случае успешного выполнения функция возвращает
последнюю строку вывода команды,
иначе возвращается false
.
Пример #1 Пример запуска внешней команды и вывода результата функцией system()
<?php
echo '<pre>';
// Функция выводит полный результат shell-команды ls,
// а последнюю строку вывода возвращает в переменной $last_line.
// Функция сохраняет код возврата команды в переменной $retval
$last_line = system('ls', $retval);
// Выводим дополнительную информацию
echo '
</pre>
<hr />Последняя строка вывода: ' . $last_line . '
<hr />Код возврата: ' . $retval;
?>
Команду экранируют функцией escapeshellcmd(), а отдельные аргументы команды функцией escapeshellarg(), когда разрешают передавать в функцию пользовательские данные, чтобы пользователи обманом не заставили систему выполнить произвольные команды.
Замечание:
При запуске программы с этой функцией вывод программы перенаправляют в файл или другой поток вывода, чтобы программа продолжала работать в фоновом режиме. PHP зависнет до завершения выполнения программы, если не перенаправить вывод.