当尝试将php脚本的输出写入文件时,我得到了最奇怪的错误。 我用:
#php daily.php > error/daily
嗯,所有这一切都是在控制台输出它。该文件(错误/每日)未受影响。
错误/每日有chmod 777。 不同的结构如
#php daily.php >> error/daily
也不起作用。 daily.php的输出只是在控制台中输出...
对此有什么想法? :/提前致谢!
更新:
现在使用
#php daily.php 2> error/daily
它在控制台中什么都不输出。
但错误/每日都没有触及,没有任何内容写入。
另一个更新:
#php daily.php 2>> error/daily
按预期工作(将错误输出附加到文件),而
#php daily.php 2> error/daily
简单地清空文件并不写入任何内容。 知道为什么会这样吗?
答案 0 :(得分:1)
所以这是在shell提示符下?这些括号使得封闭的命令在shell的新调用中执行;重定向将应用于shell本身的输出,其中没有。 shell执行的命令仍会将其输出打印到控制台。只要放下括号;它们是不必要的,也是问题的根源。
答案 1 :(得分:1)
在终端中,程序有两个输出:标准输出和错误输出。默认情况下,都会在控制台中显示。
> (和>>)运算符将标准输出重定向到文件,但在控制台中保留错误输出。
由于您似乎正在尝试将错误重定向到文件,因此php必须写入错误输出。要完成你想做的事,你必须做
php daily.php 2> error/daily
如果您想重定向两个输出,您也可以这样做 <击> 撞击>
<击>php daily.php 2> error/daily 1>&2
击> <击> 撞击> 修改:不要这样做。 如果要重定向两个输出,请重定向到不同的文件。例如:
php daily.php 2> error/daily 1> output.txt