【发布时间】:2010-10-06 11:37:16
【问题描述】:
我有一个执行 shell 命令的 PHP 脚本:
$handle = popen('python last', 'r');
$read = fread($handle, 4096);
print_r($read);
pclose($handle);
我回显了 shell 输出的输出。当我在命令中运行它时,我会得到如下信息:
[root@localhost tester]# python last
[last] ZVZX-W3vo9I: Downloading video webpage
[last] ZVZX-W3vo9I: Extracting video information
[last] ZVZX-W3vo9I: URL: x
[download] Destination: here.flv
[download] 0.0% of 10.09M at ---b/s ETA --:--
[download] 0.0% of 10.09M at 22.24k/s ETA 07:44
[download] 0.0% of 10.09M at 66.52k/s ETA 02:35
[download] 0.1% of 10.09M at 154.49k/s ETA 01:06
[download] 0.1% of 10.09M at 162.45k/s ETA 01:03
但是,当我从 PHP 运行相同的命令时,我会得到以下输出:
[last] ZVZX-W3vo9I: Downloading video webpage
[last] ZVZX-W3vo9I: Extracting video information
[last] ZVZX-W3vo9I: URL: x
[download] Destination: here.flv
如您所见,底部的位丢失了,这是我需要的位!之前的问题是百分比在同一行上更新,但现在我更改了我的 Python 脚本,以便它创建一个新行。但这有所作为! :(
这个问题与to this one有关。
感谢您的帮助。
更新
需要重定向输出“2>&1”。 Arul 很幸运:P 因为我错过了选择属于 Pax 的一个真实答案的最后期限!
【问题讨论】:
-
Abs,你有机会检查一下stdout和stderr的捕获吗?
-
@Pax:在他询问后的半小时内,他已经得到了关于 STDERR 的答案。似乎是别的东西。
-
答案中还有其他内容,@stesch,这只是要尝试的第一件事,Q'er 没有留下任何迹象表明他们已经尝试过,这就是我离开的原因提醒。
-
2 月 9 日回答了“2>&1”问题。
标签: php linux shell command-line