大前提
-
>は 標準出力 (STDOUT) に対して作用するリダイレクト演算子 -
echoやprintは、すべて STDOUT に出力される -
fwrite()は出力先を指定できるので-
fwrite(STDOUT, ...)とすれば標準出力 -
fwrite(STDERR, ...)とすれば標準エラー出力
-
で、ポイントはここ。
標準エラー出力にした場合、
>だけではファイルに出力されない
- これをログに残すには、
2>または2>&1のような表記が必要
確かに実際の体験として
Webサーバーで webhook を利用して、
GitHub で push されたら本番端末で git pull するよう実装し、
そのとき、ログを保存する処理を入れたが、失敗時のエラーが保存されなかった。
原因は、git pull のエラー出力が STDERRに出力されていたため、> ではキャッチされなかったためだった。
まとめ
-
>は標準出力(STDOUT)にしか動作しない -
printecho= STDOUT -
fwrite()は出力先を指定できる -
fwrite(STDERR, ...)で出力されたメッセージをログに残すには2>や2>&1のような表記が必要