首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >写入php://stderr

写入php://stderr
EN

Stack Overflow用户
提问于 2012-12-11 23:31:46
回答 3查看 13.7K关注 0票数 9

我正在尝试使用php://stderr编写日志。我使用的是Slim框架,它使用@fopen('php://stderr', 'w')进行日志记录,并希望它能够正常工作。

以下测试用例应该有效,但只有第一个测试用例有效:

代码语言:javascript
运行
复制
// 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包装器手动打开流。“

...given上面未定义的常量通知。(我怀疑这些常量可能只用于PHP?-但我引用的页面没有说明它。)

我一直在想,这是否可能是Windows的问题,因为我正在用PHP5.3.8运行XAMPP来进行开发,但考虑到谷歌上缺乏主题和PHP.net上的评论,我不再确定了。我现在没有访问生产服务器日志的权限,无法进行测试。

EN

回答 3

Stack Overflow用户

发布于 2012-12-12 00:51:04

算了,明白了。我不太明白php://stderrerror_log之间的区别

error_log写入PHP错误日志(例如: D:\xampp\php\logs\php_error_log)

php://stderr写入服务器/Apache错误日志(例如: D:\xampp\apache\logs\error.log)

希望这能帮到别人。

票数 10
EN

Stack Overflow用户

发布于 2015-03-05 21:16:53

如果您只是在运行PHP内置web服务器(从PHP5.4.0开始),那么php://stderr将被输出到启动PHP内置web服务器的控制台的屏幕上。

票数 2
EN

Stack Overflow用户

发布于 2021-11-16 16:23:48

不能将file_put_contents放入STDERR;STDERR是一个流资源(已经打开)。所以你只能从fwrite到STDERR。请参阅https://www.php.net/manual/en/features.commandline.io-streams.php

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13830285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档