php system() 没有return 最后一行输出
php system() does not return the last line of output
我有一个 运行s youtube-dl 的脚本。我 运行 通过 php 文件使用 system() 像这样:
$output = system(getenv("YOUTUBEDL_EXE") . " --no-color -f \"mp4\" \"5uR4JucaZ5I\" -o \"/tmp/%(id)s-%(format)s.%(ext)s\"", $retVal);
视频的 ID 不正确(故意的),当我在我的终端上 运行 时得到的输出 (linux) 是这样的:
[youtube] 5uR4JucaZ5I: Downloading webpage
[youtube] 5uR4JucaZ5I: Downloading video info webpage
ERROR: 5uR4JucaZ5I: YouTube said: This video does not exist.
但是,当我 运行 它通过系统时,$output 变量 returns 第二行,而不是最后一行
[youtube] 5uR4JucaZ5I: Downloading video info webpage
我仍然得到正确的退出代码(它没有成功完成)但是无法得到带有 ERROR: 标记的最后一行所以我可以解析错误。不幸的是,这是获得错误的唯一方法,因为它只对任何错误类型 returns 1。
(youtube-dl写在python中,其可执行文件以:
开头
#!/usr/bin/env python
和一个拉链 header (PK ....) )
非常欢迎任何有关如何获取最后一行的指示!
谢谢
最后一行是一个错误,被写入 STDERR
而不是 STDOUT
。如果你想得到 PHP 的错误,你需要将 STDERR
重定向到 STDOUT
,你可以通过在命令末尾添加 2>&1
来做到这一点。
我有一个 运行s youtube-dl 的脚本。我 运行 通过 php 文件使用 system() 像这样:
$output = system(getenv("YOUTUBEDL_EXE") . " --no-color -f \"mp4\" \"5uR4JucaZ5I\" -o \"/tmp/%(id)s-%(format)s.%(ext)s\"", $retVal);
视频的 ID 不正确(故意的),当我在我的终端上 运行 时得到的输出 (linux) 是这样的:
[youtube] 5uR4JucaZ5I: Downloading webpage
[youtube] 5uR4JucaZ5I: Downloading video info webpage
ERROR: 5uR4JucaZ5I: YouTube said: This video does not exist.
但是,当我 运行 它通过系统时,$output 变量 returns 第二行,而不是最后一行
[youtube] 5uR4JucaZ5I: Downloading video info webpage
我仍然得到正确的退出代码(它没有成功完成)但是无法得到带有 ERROR: 标记的最后一行所以我可以解析错误。不幸的是,这是获得错误的唯一方法,因为它只对任何错误类型 returns 1。
(youtube-dl写在python中,其可执行文件以:
开头#!/usr/bin/env python
和一个拉链 header (PK ....) )
非常欢迎任何有关如何获取最后一行的指示!
谢谢
最后一行是一个错误,被写入 STDERR
而不是 STDOUT
。如果你想得到 PHP 的错误,你需要将 STDERR
重定向到 STDOUT
,你可以通过在命令末尾添加 2>&1
来做到这一点。