python — php system () не возвращает последнюю строку вывода

У меня есть скрипт, который запускает YouTube-DL. Я запускаю это через php-файл с помощью system () примерно так:

$output = system(getenv("YOUTUBEDL_EXE") . " --no-color -f \"mp4\" \"5uR4JucaZ5I\" -o \"/tmp/%(id)s-%(format)s.%(ext)s\"",  $retVal);

Идентификатор видео не является правильным (специально), и вывод, который я получаю, когда запускаю его на своем терминале (linux), таков:

[youtube] 5uR4JucaZ5I: Downloading webpage
[youtube] 5uR4JucaZ5I: Downloading video info webpage
ERROR: 5uR4JucaZ5I: YouTube said: This video does not exist.

НО, когда я запускаю его через систему, переменная $ output возвращает вторую строку, а не последнюю

[youtube] 5uR4JucaZ5I: Downloading video info webpage

Я все еще получаю правильные коды выхода (которые не были успешно завершены), но не могу получить последнюю строку с тегом ERROR:, чтобы я мог проанализировать ошибку. К сожалению, это единственный способ получить ошибку, поскольку она только возвращает 1 на любой тип ошибки.

(youtube-dl написан на python и его исполняемый файл начинается с:

#!/usr/bin/env python

и почтовый заголовок (PK ….))

Любые указатели в том, как получить последнюю строку, приветствуются!

Спасибо

0

Решение

Последняя строка является ошибкой и записывается в STDERR и не STDOUT, Вам нужно перенаправить STDERR в STDOUT если вы хотите получить ошибки с PHP, вы можете сделать это, добавив 2>&1 в конце вашей команды.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]