Освоение выполнения командной строки PHP: подробное руководство

Выполнение команд терминала из PHP открывает мир возможностей для автоматизации, системного администрирования и взаимодействия с внешними программами. В этой статье мы рассмотрим различные методы запуска команд в терминале с использованием PHP. Каждый метод будет сопровождаться примером кода, что позволит вам понять и реализовать их в своих проектах.

Метод 1: использование функции Shell_exec()
Функция Shell_exec() позволяет выполнить команду и получить полный вывод в виде строки.

$command = 'ls -l';
$output = shell_exec($command);
echo $output;

Метод 2: использование функции exec()
Функция exec() аналогична функции Shell_exec(), но позволяет захватывать только последнюю строку вывода.

$command = 'git status';
exec($command, $output);
echo end($output);

Метод 3. Использование функции system()
Функция system() полезна, когда вы хотите выполнить команду и отобразить ее вывод непосредственно в браузере.

$command = 'php -v';
system($command);

Метод 4. Использование функции passthru()
Функция passthru() удобна, когда вам нужно выполнить команду и отобразить ее вывод без каких-либо помех.

$command = 'composer install';
passthru($command);

Метод 5: использование функции popen()
Функция popen() позволяет открыть канал для команды и постепенно считывать ее выходные данные.

$command = 'tail -f /var/log/nginx/access.log';
$handle = popen($command, 'r');
while (!feof($handle)) {
    echo fgets($handle);
}
pclose($handle);

Метод 6. Использование функции proc_open()
Функция proc_open() обеспечивает максимальный контроль над выполнением команды, позволяя взаимодействовать с ней через каналы.

$command = 'grep -r "search term" /path/to/directory';
$descriptors = [
    0 => ['pipe', 'r'],
    1 => ['pipe', 'w'],
    2 => ['pipe', 'w'],
];
$process = proc_open($command, $descriptors, $pipes);
if (is_resource($process)) {
    $output = stream_get_contents($pipes[1]);
    fclose($pipes[0]);
    fclose($pipes[1]);
    fclose($pipes[2]);
    proc_close($process);
    echo $output;
}

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

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