Перенаправить fastcgi STDERR в журнал ошибок nginx

#perl #nginx #cgi

#perl #nginx #cgi

Вопрос:

Я использую nginx с fastcgi-оболочкой из http://nginxlibrary.com/perl-fastcgi / для выполнения файлов perl в ubuntu 14.04. Моя проблема заключается в том, что всякий раз, когда в файле perl возникает ошибка, журнал ошибок nginx не содержит описательных внутренних элементов (в отличие от Apache). Существует только общая ошибка типа «восходящий поток преждевременно закрыл стандартный вывод FastCGI при чтении заголовка ответа из восходящего потока».

Я предполагаю, что STDERR не пересылается должным образом, но я не смог найти ни одного намека на то, как настроить оболочку, чтобы заставить ее работать по своему усмотрению. У кого-нибудь есть какие-нибудь идеи для меня?

Комментарии:

1. Что tied(*STDERR) такое и eval { fileno(*STDERR) } // "u" ? (Я предполагаю, что вы используете Perl 5.10 )

2. Я распечатал результаты ваших утверждений, и первое ничего не возвращает, в то время как второе говорит 2.

3. Ты сделал это в обертке? Извините, я не понял. Не могли бы вы сделать это внутри Accept цикла в оболочке.

4. Хорошо, я попытался распечатать его из цикла в файл журнала, но безуспешно. Но я понял, что сообщения об ошибках perl печатаются в терминале, который я использовал для перезапуска служб (perl-fcgi и nginx). Может быть, это вам как-то поможет. Кроме того, я понял, что служба не останавливается должным образом, когда в sudo service perl-fcgi stop ней написано «perl процесс не найден», и когда я запускаю службу, в ней говорится «адрес привязки / прослушивания уже используется». Есть ли лучший способ запустить perl с nginx?

5. Повторите «Хорошо, я пытался распечатать его из цикла в файл журнала, но безуспешно», Ну, мы можем пропустить диагностику, почему это не работает, и обойти проблему, открыв STDERR для записи в ваш собственный файл журнала вместо использования nginx, но вы только что сказали, что не можетевыясните, как записывать в файл !?