我正在尝试使用 php://stderr 来编写日志以使其正常工作。我正在使用 Slim 框架,该框架@fopen('php://stderr', 'w')
用于日志记录,并且真的希望它能够正常工作。
以下测试用例应该有效,但只有第一个有效:
// 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 手册中的以下引用令人困惑:
建议您简单地使用常量 STDIN、STDOUT 和 STDERR,而不是使用这些 [引用 php://stdin、php://stdout 和 php://stderr] 包装器手动打开流。”
...鉴于上面未定义的常量通知。(我怀疑这些常量可能仅与 PHP CLI 一起使用?-但我引用的页面没有说明。)
我一直想知道这是否可能是 Windows 的事情,因为我正在使用 PHP 5.3.8 运行 XAMPP 进行开发,但鉴于 Google 上缺乏主题和 PHP.net 上的评论,我不再那么确定了。我现在无法访问我的生产服务器日志以供我测试。