Как исправить белый экран смерти в WordPress
Я расскажу вам про все возможные проблемы, самые частые причины их возникновения, а также – что самое главное – предложу вам решения того, как вернуть свой сайт в рабочее состояние в максимально быстрые сроки.
Белый экран смерти (WSOD) практически всегда связан с ошибками в коде PHP или исчерпанием доступной памяти. Первое, что нужно сделать, это определить, работает или нет панель администратора. Если фронтэнд сайта не отображается, но при этом панель администратора работает, то в таком случае проблема, скорее всего, вызвана поврежденной темой или плагином.
Отключаем плагины и темы
Самый лучший способ справиться с этим – отключить все плагины. Если это поможет решить проблему, то в таком случае вам останется лишь найти виновника. Начните активировать плагин один за другим, перезагружая свой сайт после каждой активации. Если ваш фронтэнд перестанет работать, следовательно, вы нашли проблемный плагин.
Если это не помогло, то в таком случае вы можете временно переключиться на дефолтную тему WordPress. Можно, к примеру, воспользоваться Twenty Fifteen. Если ваш сайт стал нормально работать, значит, проблема связана с вашей темой.
Включаем режим отладки
Если ваш сайт по-прежнему не работает, либо панель администратора не запускается (или если вы обнаружили виновника проблемы, но при этом хотите копнуть еще глубже), вы можете включить режим отладки, который позволит вам увидеть любые ошибки.
Проблема состоит в том, что когда происходит фатальная ошибка, скрипт просто прекращает свое выполнение. Если ошибка произойдет до того, как какой-либо контент будет выведен на экран, вы просто увидите белый экран, лишенный какой бы то ни было информации.
Чтобы включить режим отладки, вам нужно открыть файл wp-config.php вашей сборки WordPress. В нем должна быть следующая строка:
define( 'WP_DEBUG', false )
Вам нужно заменить false на true, после чего уже перезагрузить сайт. Вместо белого экрана смерти вы получите белый экран с сообщениями об ошибках. Не самое прекрасное усовершенствование, но зато хоты бы появляются какие-то зацепки.
Если вы не отключали темы и плагины, вы сможете понять, кто является виновником проблемы, просто изучив сообщение об ошибке. В сообщении должно быть указано, какой файл вызвал ошибку. Пример:
Cannot redeclare get_posts() (previously declared in /var/www/html/wordpress/wp-includes/post.php:1874) in /var/www/html/wordpress/wp-content/plugins/my-test-plugin/my-test-plugin.php on line 38
Как вы можете видеть, проблему вызвала строка 38 плагина, который называется «my-test-plugin». Отключаем этот плагин, и все должно заработать.
Совет: если у вас имеется доступ по FTP или вы можете зайти на сервер через панель управления вашего хостинга (к примеру, cPanel), вы можете разом деактивировать все плагины, переименовав папку plugins, к примеру, в plugins.hold. Папка находится в wp-contents.
Если вы разбираетесь в коде, вы можете попытаться самостоятельно модифицировать плагин. В случае с плагином из официального хранилища я рекомендую написать его автору вместо того, чтобы самостоятельно пытаться что-то исправить. При ручной модификации плагина вам придется самостоятельно поддерживать все изменения, что является довольно проблематичной задачей. Проще его деактивировать и дождаться того момента, когда он будет исправлен разработчиком.
Увеличиваем лимиты памяти
Если вы по-прежнему видите пустую страницу или получаете сообщение о нехватке памяти, то в таком случае вам нужно выделить приложению больше памяти. Сделать это можно через файл wp-config.php в большинстве сборок, просто добавьте следующий код:
define('WP_MEMORY_LIMIT', '64M');
Если это не сработало, то в таком случае у вас есть несколько вариантов того, как можно поступить. В обычной среде вы можете использовать ваш файл .htaccess – который находится в корневой директории WordPress, – чтобы увеличить лимит памяти. Просто добавьте в него следующую строку:
php_value memory_limit 64M
Если вы работаете с современными хостингами, которые используют в своей архитектуре Nginx, файл .htaccess может быть недоступен. В таком случае вы можете воспользоваться файлом php.ini для увеличения лимита памяти. Поместите в этот файл следующую строку:
memory_limit = 64M
Если вы по-прежнему выходите за пределы выделенной памяти, то в таком случае, возможно, проблема с вашим приложением. Скорее всего, ваша тема или один из ваших плагинов используется чрезмерный объем ресурсов. Обратитесь к разработчикам или к вашему хостингу, чтобы они изучили ваши SQL-логи и статистику по использованию ресурсов.
Решаем проблемы с правами доступа к файлам
Эта причина вряд ли может привести к белому экрану смерти, однако она по-прежнему может вызывать разные проблемы.
Для WordPress действуют следующие правила:
- Файлы должны быть 664
- Папки должны быть 775
- Файл wp-config.php должен быть 660
Если у вас есть SSH-доступ к вашему серверу, вы можете применить соответствующие правила путем выполнения следующей команды, выполненной из корневой директории WordPress:
sudo find . -type f -exec chmod 664 {} + sudo find . -type d -exec chmod 775 {} + sudo chmod 660 wp-config.php
Если вы боитесь менять что-то самостоятельно, обратитесь к своему хостингу. Они сделают это за вас. Некоторые WordPress-хостинги имеют автоматическую проверку прав доступа, которая позволяет все настроить за пару секунд.
Решаем проблемы с автоматическим обновлением
В редких случаях WordPress может столкнуться с проблемами при обновлении, такими как таймаут сервера. Как правило, все решается автоматически, однако в некоторых ситуациях это может вести к появлению белого экрана смерти.
Первое, что нужно сделать в таком случае – это перейти в корневую директорию WordPress и посмотреть, есть ли в ней файл .maintenance. Удалите этот файл и попробуйте загрузить свой сайт снова. Если обновление было успешным – но WordPress не смог удалить этот файл автоматически – все вернется в обычную стезю.
Если обновление не было завершено, оно может быть сделано автоматически, что, опять же, приведет к нормальному состоянию сайта. Если это не помогло, то в таком случае вы можете пройти процедуру ручного обновления, которая поможет справиться с проблемой раз и навсегда.
Источник: kinsta.com