<div dir="ltr">Я прошу прощения, но все же можно ли выдрать по мотивам последнего патча хоть что-то еще, что, вероятно, вернул интерпретатор? Не только код, но может быть и хоть какое-то сообщение, а-ля дебаг-хардкор-только не в продакшн?<div>Все exception в коде всегда имеют сообщение, но 500-е коды продолжаются.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">пн, 15 июл. 2019 г. в 15:51, Валентин Бартенев <<a href="mailto:vbart@nginx.com">vbart@nginx.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Sunday 14 July 2019 22:09:01 Anton Kiryushkin wrote:<br>
> Валентин, спасибо, за ваш совет, пересобрал Unit и получил довольно<br>
> загадочную картину. К примеру.<br>
> Вот сообщение в логе Unit:<br>
> 2019/07/15 00:02:48.152 [warn] 20971#20971 [unit] #174772: application<br>
> returned 500 response<br>
> <br>
> Окей, идем в лог ошибок php и ищем, что ж было:<br>
> [15-Jul-2019 00:02:48 Europe/Moscow] Failed to connect [111]: Connection<br>
> refused<br>
> <br>
> Внимание вопрос. Как тут узнать причину?<br>
> <br>
<br>
Ни в исходниках интерпретатора PHP, ни в исходниках Unit-а нет таких строчек.<br>
<br>
Следовательно строчка генерируется и пишется самими php скриптами.  Имеет смысл<br>
сделать grep по всем php скриптам и таким образом найти где именно создается эта<br>
строчка и генерируется 500-ый ответ.<br>
<br>
С php-fpm в данном случае было бы ровно то же самое.<br>
<br>
--<br>
Валентин Бартенев<br>
<br>
<br>
<br>
> ср, 3 июл. 2019 г. в 18:47, Валентин Бартенев <<a href="mailto:vbart@nginx.com" target="_blank">vbart@nginx.com</a>>:<br>
> <br>
> > On Wednesday 03 July 2019 12:47:01 Anton Kiryushkin wrote:<br>
> > > Спасибо за ваш ответ.<br>
> > ><br>
> > > Ответ от php-fpm я мог найти в error-log nginx-a. Ну я не скажу, какую<br>
> > > именно. Еще раз, проблема заключается в том, что в логе в access.log<br>
> > nginx<br>
> > > есть 500-й код ответа. Но причину этого 500-го кода нельзя найти в логе<br>
> > > ошибок php (а там прописана опция error_log), и логе unit и в логе nginx,<br>
> > > потому что там в принципе не должно быть этих ошибок. В случае с fpm в<br>
> > логе<br>
> > > ошибок nginx гарантированно причину можно было найти. Приложение не<br>
> > > возвращает просто так 500-ю ошибку.<br>
> > ><br>
> > > Поэтому и возник вопрос, как же можно заставить unit писать лог любых<br>
> > своих<br>
> > > ошибок в какой-то файл. Ну или куда вообще можно было бы копать, так как<br>
> > > возможные вещи, которые есть возможность предпринять в php, на мой<br>
> > взгляд,<br>
> > > предприняты.<br>
> > [..]<br>
> ><br>
> > В error-log nginx писалось то, что приходило от php-fpm через stderr-канал,<br>
> > а тот в свою очередь посылал туда то, что php писал в stderr.<br>
> ><br>
> > В случае Unit-а весь stderr из php направляется в unit.log и собственно там<br>
> > и должен быть.<br>
> ><br>
> > Могу предложить попробовать собрать php модуль с патчем ниже.  В этом<br>
> > случае<br>
> > всякий раз, когда php-интерпретатор возвращает ответ с 500-ым кодом, в<br>
> > unit.log<br>
> > будет об этом запись.<br>
> ><br>
> > 2019/07/03 20:45:02.899 [warn] 14919#14919 [unit] #7: application returned<br>
> > 500 response<br>
> ><br>
> > Это, как минимум, позволит исключить ситуацию, что 500-ую генерирует сам<br>
> > Unit<br>
> > и не сообщает об этом по какой-то причине.<br>
> ><br>
> > --<br>
> > Валентин Бартенев<br>
> ><br>
> ><br>
> > diff -r 2b068c8361f9 src/nxt_php_sapi.c<br>
> > --- a/src/nxt_php_sapi.c        Tue Jul 02 16:44:08 2019 +0300<br>
> > +++ b/src/nxt_php_sapi.c        Wed Jul 03 20:32:38 2019 +0300<br>
> > @@ -774,6 +774,10 @@ nxt_php_send_headers(sapi_headers_struct<br>
> >          status = 200;<br>
> >      }<br>
> ><br>
> > +    if (status == 500) {<br>
> > +        nxt_unit_req_warn(req, "application returned 500 response");<br>
> > +    }<br>
> > +<br>
> >      rc = nxt_unit_response_init(req, status, fields_count, resp_size);<br>
> >      if (nxt_slow_path(rc != NXT_UNIT_OK)) {<br>
> >          return SAPI_HEADER_SEND_FAILED;<br>
> ><br>
> ><br>
> > _______________________________________________<br>
> > nginx-ru mailing list<br>
> > <a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>
> > <a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br>
> <br>
> <br>
> <br>
> -- <br>
> Best regards,<br>
> Anton Kiryushkin<br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div>Best regards,</div>Anton Kiryushkin<br><br></div></div></div>