【发布时间】:2016-07-08 03:31:00
【问题描述】:
我尝试使用 official php-fpm 映像在 Docker 容器中运行 Yii based PHP application。
Docker 容器的常见做法是将所有日志消息写入stdout / stderr。所以我在我的容器中做同样的事情,代码基本上是这样的:
$fp = @fopen('php://stdout','w');
fwrite($fp, $message);
fclose($fp);
不幸的是,PHP-FPM 现在在我所有的日志消息前面加上丑陋的警告:
[2016 年 3 月 21 日 14:10:02] 警告:[pool www] 孩子 12 进入标准输出:“2016-03-21 14:10:02 [xxxx][-][-][trace] [yii\base\Application::bootstrap] 使用 yii\debug\Module::bootstrap() 引导" [21-Mar-2016 14:10:02] 警告:[pool www] 孩子 12 在标准输出中说:“2016-03-21 14:10:02 [xxxx][-][-][info][yii\ web\Session::open] 会话开始” ...
为什么会这样?有没有办法阻止 PHP-FPM 这样做?
更新:
- 我还在docker-library/php 项目网站上打开了an issue。
- 他们已经在their configuration 中包含了
catch_workers_output = yes。所以这不是解决方案。 - 根据these changes,问题应该在 PHP 7.3 中修复
【问题讨论】:
-
我认为这是一个常见的错误github.com/heroku/heroku-buildpack-php/issues/63 已在版本 44 中修复,您能确认一下吗?
-
@HalayemAnis 无法确认。正如您应该从问题描述中看到的那样,我不使用heroku。一般来说,这更像是 php-fpm 的不当行为。
-
您尝试在
php.ini中使用catch_workers_output选项?不确定这是否可行。 -
希望这个帖子能帮到你stackoverflow.com/a/10546138/4098311
-
@MichaelHärtl,向你的努力致敬,我刚刚看到:github.com/docker-library/php/issues/207