Несмотря на то, что yii-1.x по результатам тестов на 98% совместим с hhvm,
существуют несколько ситуаций в которых код не работает или работает не
по плану.
Одна из таких ситуаций - это белая страница (white page) в случае
возникновения не обработанного исключения. Другими словами любое
CHttpException (страница не найдена) приведет к фатальной ошибке с белой
страницей. Все несовместимость заключается в схеме обработки ошибок в
классе CApplication,
а именно в методах handleException и
handleError (если быть точней в использовании
try-catch в этих методах).
Структура фреймворка позволяет выключить встроенные методы обработки ошибок
c помощью констант YII_ENABLE_EXCEPTION_HANDLER и
YII_ENABLE_ERROR_HANDLER. С помощью данных констант
возможно выключить или включить стандартные методы обработки ошибок и
исключений в ядре. Выключим эти обработчики и определим свои.
Итак, создадим класс Hhvm.php в protected.components:
Далее модифицируем index.php - переключим обработку ошибок в наш класс,
который учитываем возможности виртуальной машины:
Вот собственно и весь хак который позволит совместить обработку ошибок
в ядре yii с особенностями hhvm.
Комментарии