0

PHPスクリプトの出力をファイルに書き込もうとすると、最も奇妙なエラーが発生します。私が使う:

#php daily.php > error/daily

とにかく、これはコンソールに出力するだけです。ファイル (エラー/毎日) はそのままです。

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

これはシェルプロンプトでですか?これらの括弧により、囲まれたコマンドがシェルの新しい呼び出しで実行されます。リダイレクトはシェル自体の出力に適用されますが、そこには何もありません。シェルが実行するコマンドは、その出力をコンソールに出力します。かっこを削除するだけです。それらは不要であり、問​​題の原因です。

于 2011-04-30T12:36:26.373 に答える
1

端末では、プログラムには標準出力とエラー出力の 2 つの出力があります。デフォルトでは、両方がコンソールに表示されます。

> (および >>) 演算子は、標準出力をファイルにリダイレクトしますが、エラー出力はコンソールに残します。

エラーをファイルにリダイレクトしようとしているように見えるので、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 に答える