8

ログを動作させるために 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 でのコメントを考えると、もう確信が持てません。現在、実稼働サーバーのログにアクセスしてテストすることはできません。

4

3 に答える 3

10

気にしないでください。php://stderrとの違いはよくわかりませんでしたerror_log

error_logPHPエラーログに書き込みます(例:D:\ xampp \ php \ logs \ php_error_log)

php://stderrサーバー/Apacheエラーログに書き込みます(例:D:\ xampp \ apache \ logs \ error.log)

うまくいけば、これは他の誰かを助けるでしょう。

于 2012-12-12T00:51:04.883 に答える