0

当试图将 php 脚本的输出写入文件时,我得到了最奇怪的错误。我用:

#php daily.php > error/daily

好吧,无论如何,这一切都是在控制台中输出。该文件(错误/每日)保持不变。

错误/每日有 chmod 777。不同的结构,如

#php daily.php >> error/daily

也不行。daily.php 的输出只是一直在控制台中输出......

对此有任何想法吗?:/ 提前致谢!

更新:

现在使用

#php daily.php 2> error/daily

它在控制台中不输出任何内容。

但是 error/daily 没有受到影响,没有写入任何内容。

另一个更新:

#php daily.php 2>> error/daily

按预期工作(将错误输出附加到文件),而

#php daily.php 2> error/daily

只是清空文件并且什么都不写进去。知道为什么会发生这种情况吗?

4

2 回答 2

1

所以这是在shell提示符下?这些括号会导致在 shell 的新调用中执行包含的命令;重定向将应用于 shell 本身的输出,其中没有。shell 执行的命令仍会将其输出打印到控制台。只需去掉括号;它们是不必要的,也是您问题的根源。

于 2011-04-30T12:36:26.373 回答
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
于 2011-04-30T12:43:10.457 回答