После установки патча безопасности на Модх Evo сайт отвалился с белым экраном. Долго ковырялся. Стандартные метода типа увеличить уровень отображения ошибок до максимума, это добавить в начало
error_reporting(E_ALL); ini_set("display_errors", "on");
Оно не сработало. В error_log тоже ничего. При этом белый экран и в админке и на самом сайте. Минут 5 я прыгал с бубном, грешил на буфер вывода Modx Evo , ан нет. Пошаговая отладка привела меня к файлу protect.inc.php. Я узрел в нем строки, воистину великих программистов, за которые поотрубал бы руки.
if (strstr(str_replace('.','',serialize(array_merge($_GET, $_POST, $_COOKIE))), '22250738585072011')) { header('Status: 422 Unprocessable Entity'); die(); } // Null is evil if (isset($_SERVER['QUERY_STRING']) && strpos(urldecode($_SERVER['QUERY_STRING']), chr(0)) !== false) die(''); // Unregister globals if (@ ini_get('register_globals')) { die(''); }
Иначе говоря в трех случаях скрипт может завершаться аварийно, ничего абсолютно не выводя на экран и не записывая в логи и это не считается ошибкой. die() и всё. Что мешало записать в die() информативное сообщение? В моем случае оказалось что у хостера включены register_globals . Выключил их через .htaccess
php_flag register_globals off
И вуаля, белый экран пропал, сайт на Modx Evo заработал.