После установки патча безопасности на Модх Evo сайт отвалился с белым экраном. Долго ковырялся. Стандартные метода типа увеличить уровень отображения ошибок до максимума, это добавить в начало
1 2 |
error_reporting(E_ALL); ini_set("display_errors", "on"); |
Оно не сработало. В error_log тоже ничего. При этом белый экран и в админке и на самом сайте. Минут 5 я прыгал с бубном, грешил на буфер вывода Modx Evo , ан нет. Пошаговая отладка привела меня к файлу protect.inc.php. Я узрел в нем строки, воистину великих программистов, за которые поотрубал бы руки.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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
1 |
php_flag register_globals off |
И вуаля, белый экран пропал, сайт на Modx Evo заработал.
Свежие комментарии