2012-03-13 5 views
2

に自身の標準エラー出力を取得するには、しかし、私が見つけたすべての記事は、STDERRへの書き込み、またはどのようになどexecshell_execproc_open、で実行される他のプロセスからSTDERRを取得する方法についてです...ウェイは、私は多くのことをググPHPスクリプト

しかし、私は自分のスクリプトのSTDERRをどうやって得ることができるのか知りたいですか?
(CLIスクリプトにウェブフロントエンドを書き込み、すべてのファイルを「ブラックボックス」として使用してSTDERRを取得し、クライアントにJSONを返す)

+0

これはおそらく助けになるかもしれません:http://stackoverflow.com/questions/6731877/php-warning-redirect – k102

答えて

1

独自のエラーハンドラを作成し、好きな場所コンテンツを書く:

$log = array(); 
set_error_handler(function ($no, $str, $file, $line, array $context) use ($log) { 
    $message = "$no: $str in $file on line $line"; 
    $log[] = $message; 
    fwrite(STDERR, $message); 
}); 

おそらく、代わりにそれに書き込むのSTDERRからの読み取りを試みることができるが、私はそれがどのように動作するかよくわかりません。

+0

私は "ブラックボックス"のソースコードを変更したくありません。私はSTDERRをキャプチャしたい。 –

+0

スクリプト内ではなくコマンドラインからSTDERRをキャプチャしますか? – deceze

+0

スクリプトからSTDERRをキャプチャしたい。例えば、私はlibを持っていてSTDERRに出力しますが、出力をある配列に格納するようにlibを変更することはできません。 –

関連する問題