Белый экран смерти или что делать когда Wordpress не хочет работать?
Я занимаюсь разработкой "простых" сайтов на wordpress.
Почему он? Когда клиенту нужен небольшой сайт которым он сможет удобно сам управлять, я беру wordpress, накатываю ему на хостинг и даю инструкцию по редактированию контента на сайте.
Обычно план работ такой:
получил тз -> задал уточняющие вопросы -> отдал верстальщику дизайн -> создал из верстки тему, создал "кастомные" поля -> заполнил первично контентом -> отдал инструкцию по работе контент-менеджеру -> забрал деньги -> радуюсь.
Путь, кажется, длинный, но счастливый.
Но иногда происходят непредвиденные ситуации.
И эта статья может помочь решить проблему с белым экраном смерти или хотя бы дать еще один вариант для проверки.
Однажды к нам обратился человек которому нужно было сделать сайт.
Утвердили дизайн, сделали сайт, взяли на обслуживание.
Все было хорошо и не предвещало беды.
Спустя полгода, когда код сайта не трогают и работает только контент-менеджер, приходит заявка.
Новые страницы не создаются, белый экран. Новые поля не создаются, старые значения в полях на страницах удаляются если просто сохранить страницу.
Как же так! Не один сайт создан по этой схеме! Ни в одном нет такой проблемы!
Какие симптомы мы имеем?!
- Не создаются новые страницы, отображается белый экран
- Не создаются новые поля, при этом удаляя старые, которые не трогали
- Изменения контента на страницы приводит к его полному уничтожению!!!
После обновления плагина полей, мы используем ACF, проблема не была решена, значит надо копать дальше?
И я отправился в интернет, а конкретно в гугл, с запросом "wordpress admin white screen WTF".
Сразу же была найдена статья под названием How to Resolve the WordPress White Screen of Death, состоящая из 11 пунктов.
- Clear the WordPress cache.
- Retrace your steps.
- Check your admin dashboard and website for hints.
- Disable your plugins.
- Disable your currently active theme.
- Change your memory limit.
- Check the WordPress error logs.
- Assess your other WordPress integrations.
- Restore any recently edited file to its initial version.
- Get in touch with your hosting provider.
- Restore your website from a backup.
Пройдемся по каждому пункту
1 - Очистить кэш вордпреса.
Очищаем кэш через плагин, проблема остается.
Смотрим где еще может храниться кэш и не находим его там.
Значит идем дальше.
2 - Повторить все шаги, что были сделаны
Сайт не трогали пол года, значит идем дальше.
3 - Проверить админ панель на наличие подсказок/ошибок
Окей, тут уже дельный совет.
В такой запаре я забыл включить отображение ошибок.
Заходим в файл wp-config.php и выставляем значение
Ошибок нет. Непонятно, но идем дальше.
4, 5 - Отключить все плагины, сменить/отключить текущую активную тему
Тут я объединил два пункта в один, так как делал их почти параллельно.
Отключаем плагины.
Чтобы точно быть уверенным, что он выключен, меняем название папки с плагинами с plugins на plugins_old и создаем чистую папку plugins.
В админ панели нет плагинов, но проблема остается. Значит дело не в плагинах.
Далее в админ панели меняем тему на стандартную, проблема остается.
Стало еще грустнее, но надо решать.
6 - Изменить лимит памяти
Все в том же wp-config.php добавляем строчки, чтобы наверняка, ага
Опять ничего.
7 - Прочитать лог ошибок wp
Тут косяк, ошибки никуда не писались, но из пункта 3 мы понимаем что ничего и не записалось бы.
8 - Проверить интеграции с wp
Этот пункт я пропускаю, так как лишних интеграции с CDN и прочим тут нет
9 - Вернуть редактируемые файлы в изначальное значение.
Возвращаем файл wp-config в изначальное значение, пациент все еще мертв.
Файлы темы не трогаем, помня про пункт 5
10 - Потрогать моего хостера
Пару раз потрогал beget, где, сосбна, и лежит сайт, beget говорит все ок.
Но тут я и не сомневался, проблема не в хостинге, остальные сайты лежат на нем же, но других аккаунтах, в них проблемы нет
11 - Восстановить сайт из бэкапа
Не известно когда точно появилась проблема, попробовал восстановить из бэкапа месячной давности, проблема осталась.
Более поздних бэкапов beget не хранит, да и смысла в этого было мало.
Статья не помогла, так же я понял что она типовая и решает только самые распространенные проблемы, которые я изначально проверил.Есть вариации статей с тем, что можно поставить плагин который починит все.В надежде я сделал новый бэкап и поставил чудо плагин, но безрезультатно.
Вернув бэкап я стал думать, что делать дальше?
Оставлять клиента в беде не хочется, да и задача интересная! Как это так?! Никто не трогал, а оно сломалось?
Спустя пару дней поисков пришла идея проверить размер базы и ее саму.
Да весит много, но есть сайты и с более объемной базой.
И тут я решил их сравнить, что такого есть в сломанном сайте чего нет в рабочем?
И вот тут и была зарыта собака
Один или несколько плагинов решили добавить свои таблицы в базу, удалив все ключи с базы...
Я решил это проверить сравнив две базы и вот оно решение, нужно расставить все ключи заново, так как восстановить базу из бэкапа было уже невозможно, все что было в бэкапе уже было сломано.
Почему это все перешло в белый экран и почему wp не давал ошибок?
При создании страницы/поля/чего угодно в базу добавляется запись с ключом который должен выставиться автоматически, то есть самый большой ключ + 1.
Но так как все ключи, а значит и auto increment были стерты, он создавал запись с id 0, а потом еще одну и еще одну.
Не понимая что брать wp падал, но и проблемы такой он не знает, соответственно ошибки нет, вот чистый лист, твори!
Подведу итог исследований
- В интернете много статей о том как починить ту или иную проблему в wp, но все они однотипны и зачастую не решают задачу, а нужны только для рекламы услуг хостинга и тд
- Всегда тщательно проверяйте все!
- WP_DEBUG не показывает ошибку? Идем в плагины!
Нет проблемы в плагинах? Смотрим тему!
Нет проблемы в теме? Проверим базу! - Осторожно ставьте плагины, ставьте только проверенные.
Похожих проблем в гугле не нашел, надеюсь кому-то поможет мое небольшое расследование.