Суть:
При условии, что zlib.output_compression=On (аналогичных директив управляющих буферизацией из конфига достаточно много), при возникновении любой ошибки Yii 1.1.9-dev неизменно зависает, что приводит в конечном итоге к вылету по тайм-ауту и печали в дальнейших поисках собственных ошибок.
Почему:
После изменения 3476 файл /base/CErrorHandler.php выглядит так (101-102)
Код: Выделить всё
while (ob_get_level())
@ob_end_clean();
Нельзя сбросить буфер функцией ob_end_clean, если буферизация включена определенным образом (в данном случае из конфига). Соответственно ob_get_level() никогда не принимает нулевое значение, что означает бесконечный цикл.Notice: ob_end_clean() [ref.outcontrol]: failed to delete buffer zlib output compression in /framework/base/CErrorHandler.php on line 101
Мое решение основывается на том, что если буфер не сбросился успешно в первый раз, то и вторая попытка ему не поможет.
Примерно так (заменить 101 строку):
Код: Выделить всё
for ($level=ob_get_level();$level>0;--$level)