コードで例外をキャッチし、エラーメッセージをstderr
に書き込んでください。
(もちろん、それらが生成される順序で)混合
try {
// code that throws exceptions here
} catch (Exception $e) {
// Report the exception to stderr, to not interfere with the script output
fputs(STDERR, $e->getMessage());
// Continue the script as you think it's best (resume the processing or exit).
}
出力がリダイレクトされていない場合、stdout
とstderr
に送信されたコンテンツが画面上に来る両方のストリームが端末に関連付けられているからです。
あなたはfile.txt
だけstdout
にリダイレクトする場合は、stderr
(エラー・メッセージ)に書かれているコンテンツが端末に表示されます。また、同じファイルまたは別のファイルにstderr
をリダイレクトすることができます
# Redirect stderr to a different file (file.err)
php script.php -arg >file.txt 2>file.err
# Redirect stdout to a file (file.txt) and duplicate stderr to stdout
# (to send its output to file.txt too)
# The order of redirections is important here
php script.php -arg >file.txt 2>&1
例外をキャッチしにエラーメッセージを書き込む[ 'stderr'](http://php.net/manual/en/features。 commandline.io-streams.php)。 'stdout'だけをリダイレクトしたため、画面に表示されます。 – axiac
ありがとう、それは働いた。私はこれらの可能性を認識していませんでした。あなたが答えとしてそれを投稿するなら、私は受け入れます。 – Ynhockey