2016-03-21 46 views
19

我嘗試在使用official php-fpm圖片的Docker容器中運行Yii based PHP application爲什麼在寫入標準輸出時,PHP-FPM爲前綴寫入警告?

碼頭集裝箱將所有日誌消息寫入到stdout/stderr是很常見的做法。所以,我做同樣的從我的容器,它看起來像這樣的代碼:

$fp = @fopen('php://stdout','w'); 
fwrite($fp, $message); 
fclose($fp); 

不幸的是PHP-FPM現在前綴與醜陋的警告,我所有的日誌消息:

[3月21日-2016 14:10:02]警告:[pool www] child 12表示輸入stdout:「2016-03-21 14:10:02 [xxxx] [ - ] [ - ] [trace] [yii \ base \ Application :: bootstrap ]引導與yii \調試\模塊::引導()「 [21-Mar-2016 14:10:02]警告:[池www]兒童12說入標準輸出:」2016-03-21 14:10:02 [xxxx] [ - ] [ - ] [info] [yii \ web \ Session :: open] Session started「 ...

這是爲什麼,有沒有辦法阻止PHP-FPM做到這一點?

UPDATE:

  1. 我也在docker-library/php項目網站正式開通an issue
  2. 他們已經在their configuration中包含catch_workers_output = yes。所以這不是解決方案。
+0

我認爲這是一個常見的錯誤https://github.com/heroku/heroku-buildpack-php/issues/63它已在44版中修復,您能否確認? –

+0

@HalayemAnis無法確認。正如你應該從問題描述中看到的,我不使用heroku。這更多的是一般的php-fpm的不當行爲。 –

+1

您嘗試使用'php.ini'中的'catch_workers_output'選項?不知道這是否會起作用。 – Pitchinnate

回答

0

這是正確的。你正在運行php-fpm,錯誤日誌來自php-fpm,而不是來自PHP。 你應該期待php-fpm日誌,而不是php日誌。幸運的是,php-fpm會在其日誌結尾寫入從PHP接收的每個日誌。