ログを動作させるために php://stderr を使用しようとしています。私は@fopen('php://stderr', 'w')
ロギングに利用するSlimフレームワークを使用しており、これが機能することを本当に望んでいます。
次のテスト ケースは動作するはずですが、動作するのは最初のケースのみです。
// 1. error_log - works fine
error_log("Written through the error_log function", 0);
// 2. PHP wrapper, ie php://stderr - does not work
$stderr = fopen( 'php://stderr', 'w' );
fwrite($stderr, "Written through the PHP error stream" );
fclose($stderr);
// 3. PHP wrapper also, different syntax, just to be safe - no effect either
file_put_contents( "php://stderr","Hello World" );
// 4. PHP wrapper, this time using this elusive constant referred to in the manual - result: "Notice: Use of undefined constant STDERR - assumed 'STDERR' ", ie: failed also!
file_put_contents( STDERR, "Hello World" );
私はPHPマニュアルとグーグルをよく調べてきましたが、あまり助けがありません.
特に、ラッパーに関するPHP マニュアルからの次の引用は混乱を招きます。
これらの [php://stdin、php://stdout、および php://stderr を参照する] ラッパーを使用して手動でストリームを開く代わりに、定数 STDIN、STDOUT、および STDERR を使用することをお勧めします。」
...上記の未定義の定数通知が与えられた場合。(これらの定数は PHP CLI のみで使用される可能性があると思いますが、引用しているページには記載されていません。)
開発用に PHP 5.3.8 で XAMPP を実行しているので、これが Windows のものであるかどうか疑問に思っていましたが、Google でのトピックの欠如と PHP.net でのコメントを考えると、もう確信が持てません。現在、実稼働サーバーのログにアクセスしてテストすることはできません。