ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: nginx не пишет в свои логи то, что передает FastCGI в stderr



Hello!

On Fri, Mar 16, 2012 at 09:16:05AM -0400, jekakm wrote:

> Вообще то так и должно быть. В
> нормальной ситуации nginx сообщения от
> fastcgi с stdout отправляет клиентам, а с stderr
> пишет в лог.

Нет, fastcgi работает по другому.  С fastcgi-приложением сервер 
(nginx) общается по одному сокету, в котором представлены 
различные потоки данный, в частности - FCGI_STDOUT, FCGI_STDERR.  
В которые приложение (php в вашем случае) должно перенаправить данные, 
предназначающиеся в классическом CGI для stdout и stderr 
соответственно.

Подробнее можно прочитать тут:
http://www.fastcgi.com/devkit/doc/fcgi-spec.html#S5.3

> Все записи в логах nginx'а о
> ошибках в php начинаются с "FastCGI sent in stderr:",
> что как бы намекает.

Есть две вещи, которые не следует путать: stderr в его исходном 
смысле (т.е. файл за номером 2 в рамках fastcgi-приложения)
и FCGI_STDERR stream, который и логгирует nginx.

Проблема в вашем случае, судя по всему, состоит именно в том, что 
php _не_ отправляет данные в поток FCGI_STDERR, а просто пишет их 
файл номер 2 aka stderr.

Убедиться в этом моторным методом достаточно просто - перевесить 
fastcgi_pass на tcp-socket, и tcpdump'ом посмотреть поток.

Maxim Dounin

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.