PHP 4.3.11 из CVS и ошибки PHP скриптов

Igor Sysoev is at rambler-co.ru
Thu Feb 17 14:45:18 MSK 2005


On Thu, 17 Feb 2005, Mike Kolesnikov wrote:

> Обнаружил некую невосместимость версий PHP в плане обработки ошибок
> скриптов в режиме FastCGI.
> Если в обрабатываемом скрипте есть ошибка (например, функция не
> определена), то PHP 4.3.2 возвращает результат в записи типа
> FCGI_STDOUT, в то время как PHP 4.3.11 из CVS пишет в FCGI_STDERR, а
> этот тип FCGI записи nginx-ом не обрабатывается.
>
> Пример из жизни, PHP 4.3.2, в скрипте не определена функция:
>
> 2005/02/17 13:41:50 [debug] 7671#0: *243 pipe recv chain: 0
> 2005/02/17 13:41:50 [debug] 7671#0: *243 pipe buf free s:0 t:1 f:0
> 080D0260, pos 080D029C, size: 28 file: 0, size: 0

>
> Теперь PHP 4.3.11-dev:
>
> 2005/02/17 04:53:24 [debug] 11900#0: *422 recv: fd:60 112 of 32768
> 2005/02/17 04:53:24 [debug] 11900#0: *422 http fastcgi record byte: 01

> Эксперименты показывают, что только некоторые ошибки лезут в
> FCGI_STDERR. Скажем, деление на ноль и неопределенная функция идут в
> stderr, а просто parse error оправляется в stdout. В общем, непонятки.
> Тем не менее, может быть, добавить поддержку FCGI_STDERR в nginx?
> Логически он не сильно отличается от FCGI_STDOUT. Тем более что в спеке
> написано:
> Use of the FCGI_STDERR stream is always optional. If an application has
> no errors to report, it sends either no FCGI_STDERR records or one
> zero-length FCGI_STDERR record.
>
> Т.е. бэкенд запросто может послать FCGI_STDERR, даже если ошибки не было.

Вчера вечером я доделал поддержку FCGI_STDERR. До этого она не работала.
Мне просто не на чем было потестировать FCGI_STDERR, php про ошибки
писал в FCGI_STDOUT.

Через полчаса будет 0.1.20. Хорошо бы в нём потестировать FCGI_STDERR.


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list