У меня есть скрипт, который запускает 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 ….))
Любые указатели в том, как получить последнюю строку, приветствуются!
Спасибо
Последняя строка является ошибкой и записывается в STDERR
и не STDOUT
, Вам нужно перенаправить STDERR
в STDOUT
если вы хотите получить ошибки с PHP, вы можете сделать это, добавив 2>&1
в конце вашей команды.
Других решений пока нет …