РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1060 of 1361 menu

Метод fromShellCommandline

Метод fromShellCommandline класса Process создаёт экземпляр процесса из команды shell, переданной строкой. В отличие от конструктора, который принимает массив аргументов, этот метод позволяет выполнить команду целиком, как если бы она была введена в терминале. Первым параметром передаётся строка команды. Вторым параметром можно передать рабочую директорию, третьим - переменные окружения, четвёртым - таймаут.

Синтаксис

Process::fromShellCommandline( string $command, ?string $cwd = null, ?array $env = null, ?float $timeout = 60 )

Пример

Давайте создадим процесс из shell-команды и выведем результат:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Process\Process; class ProcessController extends AbstractController { public function index(): Response { $process = Process::fromShellCommandline('echo "hello"'); $process->run(); return new Response($process->getOutput()); } } ?>

Результат выполнения кода:

hello

Пример

Давайте передадим переменные окружения и рабочую директорию:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Process\Process; class ProcessController extends AbstractController { public function env(): Response { $process = Process::fromShellCommandline( 'echo $APP_ENV', null, ['APP_ENV' => 'abcde'] ); $process->run(); return new Response($process->getOutput()); } } ?>

Результат выполнения кода:

abcde

Пример

Давайте обработаем ошибку выполнения команды:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Process\Process; class ProcessController extends AbstractController { public function error(): Response { $process = Process::fromShellCommandline('ls /not-exists-path'); $process->run(); if (!$process->isSuccessful()) { return new Response($process->getErrorOutput()); } return new Response($process->getOutput()); } } ?>

Результат выполнения кода:

ls: cannot access '/not-exists-path': No such file or directory

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

  • метод run,
    который запускает процесс и ждёт его завершения
  • метод mustRun,
    который запускает процесс и бросает исключение при ошибке
  • метод getOutput,
    который возвращает стандартный вывод процесса
  • метод getErrorOutput,
    который возвращает вывод ошибок процесса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить