![](/img/trans.png)
[英]How to write system output to a file without >filename in command line in php
[英]Dump php system command output to a file
在php系统命令中,我们使用以下内容
system("ffmpeg -i test.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv output_file.flv 2>&1 &").
请解释上述系统命令的用法。 '2>&1&'代表什么? 我想将进程详细信息转储到文件中,我该怎么做?
非常感谢你。
2>&1
重定向« stderr
»到« stdout
» , &
在端部使得在命令运行背景 。
要完成它应该是
«command» 2>&1 > /tmp/somefile.log &
没有将« stdout
»重定向到从system()
在后台运行的文件(或/dev/null
)没有多大意义,因为一旦PHP终止(例如达到时间限制),你的命令就会被杀死。
来自system()
手册:
注意:如果使用此功能启动程序,为了使程序在后台继续运行,程序的输出必须重定向到文件或其他输出流。 如果不这样做将导致PHP挂起,直到程序执行结束。
2>&1将标准错误(2)日志重定向到标准输出(1)。
不确定额外的和最后的是什么。
如果要将stderr或stdout传递给文件,可以轻松完成。
要将stderr管道传输到文件,请将2>&1更改为2> filepath
文件路径最好是绝对文件路径(例如:2> /home/user/output.mpg)
每个UNIX程序都有两个输出流:stdout和stderr。 出于重定向的目的,>符号将stdout(文件描述符1)重定向到文件。 “2>”将stderr(文件描述符2)重定向到一个文件,在本例中用“&1”表示,它告诉shell使用文件描述符1(stdout)。 在php上下文中,这意味着两个流都将打印在您的脚本输出中,您现在怀疑它已经找到了。
命令末尾的&告诉shell在后台运行作业。 我不知道你为什么要在这种环境中这样做。
如果要通过PHP写入文件,还可以使用[exec()][1]
或[passthru()][2]
,它们具有从命令返回所有内容的选项。 system()
只返回最后一行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.