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

Метод getErrorOutput класса Process

Метод getErrorOutput класса Process возвращает текст, который процесс записал в стандартный поток ошибок (stderr). Метод не принимает параметров и возвращает строку. Обычно его вызывают после завершения процесса, чтобы прочитать сообщения об ошибках, которые возникли при выполнении команды.

Синтаксис

$res = $process->getErrorOutput();

Пример

Давайте запустим команду, которая завершится с ошибкой, и прочитаем её поток ошибок:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentProcessProcess; class ProcessController extends AbstractController { public function index(): Response { $process = new Process(['ls', '/nonexistent']); $process->run(); $res = $process->getErrorOutput(); return new Response($res); } } ?>

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

"ls: cannot access '/nonexistent': No such file or directory"

Пример

Давайте сравним вывод команды и её поток ошибок:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentProcessProcess; class ProcessController extends AbstractController { public function index(): Response { $process = new Process(['ls', '/nonexistent']); $process->run(); $output = $process->getOutput(); $errorOutput = $process->getErrorOutput(); return new Response('output: "' . $output . '", error: "' . $errorOutput . '"'); } } ?>

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

output: "", error: "ls: cannot access '/nonexistent': No such file or directory"

Пример

Давайте запустим команду, которая пишет в оба потока, и прочитаем поток ошибок:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentProcessProcess; class ProcessController extends AbstractController { public function index(): Response { $process = new Process(['sh', '-c', 'echo "hello"; echo "abcde" >&2']); $process->run(); $res = $process->getErrorOutput(); return new Response($res); } } ?>

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

"abcde"

Пример

Давайте проверим, что метод возвращает пустую строку, если ошибок не было:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentProcessProcess; class ProcessController extends AbstractController { public function index(): Response { $process = new Process(['echo', 'hello']); $process->run(); $res = $process->getErrorOutput(); return new Response('"' . $res . '"'); } } ?>

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

""

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

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