WordPress завис в режиме обслуживания — как выйти и восстановить доступ | Мастерская — de-bor.ru

Частный web-мастер Денис Борисов
WordPress-сайтов

WordPress завис в режиме обслуживания — как выйти и восстановить доступ

WordPress: ошибки и фиксы · 2026-06-03 · 8 мин чтения
Обновили WordPress, плагин или тему — и сайт превратился в белый лист с надписью «Техническое обслуживание» или «Краткая недоступность». Иногда без единой надписи. Вы ждёте минуту, пять, десять — ничего. Это не норма. Режим обслуживания должен висеть ровно на время обновления — обычно 5--30 секунд. Если прошло больше минуты — WordPress застрял. Решение простое, но есть три разных сценария: иногда достаточно удалить один файл, иногда нужен доступ к базе, а иногда — к файлам темы.

Почему WordPress застревает в режиме обслуживания

При каждом обновлении (ядро, плагин, тема) WordPress создаёт в корне сайта файл .maintenance с одной строчкой внутри:

<?php $upgrading = time();

Когда скрипт обновления завершается, WordPress должен сам удалить этот файл. Не удалил — сайт остаётся заблокированным. Вот что мешает.

1. Обновление прервалось посередине Самая частая причина. Плагин тяжёлый (WooCommerce, Elementor), на хостинге стоит лимит времени выполнения скрипта (обычно 30--120 секунд) — скрипт падает по timeout, а .maintenance остаётся. На дешёвых тарифах Beget и Timeweb бывает регулярно.
2. Конфликт плагинов Обновляете сразу несколько плагинов: один из них ломает процесс обновления другого. WordPress падает с фатальной ошибкой на середине — .maintenance не удалён.
3. Права на запись не совпадают WordPress не может удалить собственный файл. Бывает, если сайт перенесли, владелец файлов сменился (root вместо www-data), или папка на хостинге примонтирована c noexec/no-write. На Beget и REG.RU проблема возникает если файлы залиты через FTP-пользователя, а PHP работает от другого.
4. Сбой при копировании файлов обновления WordPress качает zip-архив обновления → распаковывает → копирует в wp-content/upgrade/. Если места на диске нет или права кривые — файлы копируются не полностью, процесс зависает, .maintenance остаётся.
5. AJAX-запрос в момент обновления Кто-то открыл админку в момент обновления и дернул heartbeat API. WordPress путается, думает что процесс ещё идёт, оставляет файл на месте.

Как выйти из режима обслуживания: пошагово

Шаг 1. Удалить .maintenance (базовый способ)

Файл лежит в корне WordPress-сайта. В нем точка в начале имени — он скрытый. В FTP-клиентах (FileZilla, WinSCP) включите показ скрытых файлов. В панели хостинга (файловый менеджер Beget, Timeweb, REG.RU) — тоже включайте опцию «показывать скрытые».

Нашли .maintenance — просто удалите. Сайт вернется к жизни через 1--2 секунды. Если не появился — сделайте жесткий сброс кэша браузера: Ctrl+Shift+R (Windows) или Cmd+Shift+R (Mac).

Через SSH (VPS) Быстрее всего — консолью:
cd /var/www/ваш-сайт/ && rm -f .maintenance
Если удаление не помогло — проверьте, точно ли файл исчез: ls -la | grep maintenance

Шаг 2. Очистить кэш WordPress и хостинга

После удаления .maintenance сайт может по-прежнему показывать страницу обслуживания из-за кэша.

Кэш плагина: если стоит WP Rocket, LiteSpeed Cache или W3 Total Cache — сбросить его. Найти папку wp-content/cache/ и удалить содержимое (саму папку не трогать).

Кэш хостинга: на Beget — кнопка «Очистить кэш» в панели. На Timeweb — раздел «Кэширование», отключить и включить заново. На REG.RU — кэширования на уровне shared-хостинга обычно нет, но проверьте вкладку «Nginx» если стоит.

Кэш браузера: открыть сайт в режиме инкогнито (Ctrl+Shift+N). Если там работает — дело в кэше вашего браузера, а не в сервере.

# Сброс кэша WordPress через WP-CLI (если установлен)
wp cache flush
wp transient delete --all

Шаг 3. Проверить wp-content/upgrade/ на мусор

При зависшем обновлении в wp-content/upgrade/ остаются временные файлы. Они мешают WordPress понять, завершилось обновление или нет.

Зайдите в эту папку — внутри будут подпапки типа plugin-name/ или theme-name/ с распакованными файлами, плюс временные zip-архивы. Удалите всё содержимое wp-content/upgrade/ (саму папку оставьте).

Не удаляйте саму папку upgrade — только её содержимое. WordPress создаст папку заново, но без неё следующее обновление упадёт с ошибкой «Не удалось создать директорию».

Шаг 4. Если не помогло: восстановить доступ через базу

В редких случаях WordPress записывает флаг обслуживания не только в файл, но и в базу данных — в таблицу wp_options (ключ maintenance_mode). Это баг, он проявляется на старых версиях WP или при кривых миграциях.

Зайдите в phpMyAdmin (или Adminer на Beget, или консоль MySQL на VPS), выберите базу сайта и выполните:

SELECT * FROM wp_options WHERE option_name LIKE '%maintenance%';

Если нашлась запись — удалите:

DELETE FROM wp_options WHERE option_name LIKE '%maintenance%';

Затем очистите кэш object cache если включён (Redis/Memcached). На VPS: redis-cli FLUSHALL или systemctl restart memcached.

Шаг 5. Файл удалён, а обновление не завершено

Вы удалили .maintenance, сайт открылся — но плагин или тема обновились не полностью. Версия в админке новая, а часть файлов старые. Результат: белый экран или фатальная ошибка на отдельных страницах.

В этом случае — переустановить плагин вручную:

# Через WP-CLI
wp plugin install woocommerce --force
# или вручную: скачать zip с wordpress.org/plugins/ и распаковать в wp-content/plugins/

После ручной переустановки снова зайдите в wp-content/upgrade/ и удалите мусор. Затем зайдите в админку → Плагины — в списке плагинов тот, что глючил, должен стоять с актуальной версией и без ошибок.

Проверка результата

Сайт должен показать нормальную страницу Откройте главную, любую внутреннюю страницу и wp-login.php — все три должны грузиться без «режима обслуживания». Если главная открылась, а админка нет — проверьте шаг 2 (кэш).
Админка открывается и показывает корректную версию WP Консоль → Обновления. Если висит «Обновить до WordPress 6.x» — последнее обновление ядра не завершилось. Нажмите «Обновить сейчас» повторно — на этот раз .maintenance удалится штатно.
Никаких уведомлений об ошибках в админке Зайдите в раздел Плагины. Если какой-то плагин деактивирован с красной плашкой «плагин отключен из-за ошибки» — это тот, на котором обновление сорвалось. Либо обновите его вручную, либо удалите и поставьте заново.

Когда способ не сработает

Удалили .maintenance, а сайт всё равно белый (WSOD) Это не режим обслуживания, а ошибка PHP (White Screen of Death). Включите лог ошибок: добавьте в wp-config.php строчку define( 'WP_DEBUG', true ); — на экране появится конкретная ошибка. Ищите решение по тексту ошибки (чаще всего виноват плагин, который несовместим с новой версией PHP или WP).
Нет доступа к файлам по FTP/SSH Хостинг заблокировал доступ из-за просрочки оплаты или за превышение лимитов. Варианты: восстановить доступ через техподдержку хостинга или попробовать зайти через файловый менеджер панели хостинга (он работает даже если FTP отключен).
Обновление упало из-за нехватки памяти На экране была ошибка «Allowed memory size of N bytes exhausted». Тогда простого удаления .maintenance недостаточно — увеличьте лимит памяти в wp-config.php: define( 'WP_MEMORY_LIMIT', '256M' ); и повторите обновление.
Подключен page cache на уровне сервера (Nginx FastCGI / Varnish) Даже после удаления .maintenance сервер продолжает отдавать закэшированную страницу обслуживания. Лечится сбросом кэша: на Beget — через панель, на VPS — systemctl restart nginx или rm -r /var/cache/nginx/*.

Как предотвратить зависания в будущем

Обновляйте по одному — не жмите «Обновить всё» на 7 плагинах сразу. Каждый по отдельности: обновился → страница вернулась → следующий.

Увеличьте лимит времени выполнения в wp-config.php:

set_time_limit(300);

Настройте автоудаление .maintenance через wp-config.php (сработает на WP 5.2+):

define( 'WP_AUTO_UPDATE_CORE', true );

С этой константой WordPress будет агрессивнее завершать процесс обновления и удалять файл при любом исходе.

Частые вопросы

Где найти файл .maintenance на хостинге Beget?
В файловом менеджере Beget зайдите в папку public_html/ (корень сайта). Включите показ скрытых файлов — галочка «Скрытые файлы» над списком. Файл .maintenance будет в списке самым первым или в самом конце. Если его нет — проблема не в режиме обслуживания, проверяйте лог ошибок PHP.
Удалил .maintenance, но через день опять завис — что делать?
Это значит, что какое-то обновление стабильно падает. Скорее всего, плагин с большим размером архива (WooCommerce — ~15 МБ, Elementor — ~10 МБ) не успевает распаковаться в лимит времени хостинга. Решение: обновлять этот плагин вручную через FTP (скачать zip, распаковать и залить) или увеличить max_execution_time в настройках PHP хостинга до 300 секунд.
Можно ли вообще отключить режим обслуживания в WordPress?
Отключить совсем — нельзя. Но можно сделать его незаметным: добавьте в wp-config.php константу define( 'WP_ENVIRONMENT_TYPE', 'local' );. На локальном окружении WordPress не показывает страницу обслуживания посетителям. Только не ставьте эту константу на боевой сайт — при реальных обновлениях пользователи увидят WSOD вместо корректного сообщения.
После удаления .maintenance админка открывается, а главная — белый экран
Типичный симптом конфликта темы с новой версией PHP или WordPress. Зайдите в админку → Внешний вид → Темы → временно активируйте любую стандартную тему (Twenty Twenty-Five). Если сайт заработал — проблема в вашей теме. Если нет — деактивируйте все плагины разом и включайте по одному, чтобы найти виновника.
Поможет ли восстановление из бэкапа?
Поможет, но это как вызывать эвакуатор из-за спущенного колеса. Режим обслуживания — обратимая проблема, файл удаляется за секунду. Бэкап нужен только если вместе с зависанием обновление повредило файлы сайта и он не грузится даже после удаления .maintenance.

Сайт не выходит из режима обслуживания?

Напишите — удалю файл, проверю обновления и верну сайт к жизни за 10 минут.

Написать в Написать в

Сопровождение и поддержка сайта

Сопровождение и поддержка сайта

Исправлю ошибки WordPress, восстановлю сайт.

от 5.400 ₽/мес

Подробнее
Техническая оптимизация

Техническая оптимизация

Ускорю сайт, настрою кэш, устраню узкие места.

7.200

Подробнее
Меню раздела
Теги

Разрабатываю WordPress-сайты

Лендинги, многостраничные сайты, интернет-магазины на WooCommerce — всё на WordPress с удобной панелью управления.

Сайт под ключ: регистрация домена и хостинга, установка WordPress, настройка шаблона и модулей.

Поддерживаю WordPress-сайты

Обновление плагинов и тем, резервное копирование, мониторинг работоспособности — сайт работает без сбоев.

Оперативное исправление ошибок, создание новых разделов, доработка функционала и наполнение контентом.

Продвигаю WordPress-сайты

SEO-оптимизация, настройка Яндекс Метрики и Вебмастера, подключение Google Search Console.

Оптимизация позволяет «поднять» сайт в поисковых выдачах, увеличить целевой трафик и привлечь новых клиентов.

Чистка от вирусов WordPress

Если сайт взломали, появился подозрительный код или спам-рассылка — найду и удалю вредоносный код, закрою уязвимости и настрою защиту от повторного заражения.

После чистки проверю все файлы и плагины, обновлю WordPress до актуальной версии и настрою автоматическое резервное копирование.

Диагностика сайта

Проверю ваш сайт по ключевым параметрам и подготовлю отчёт с рекомендациями:

  • Скорость загрузки и производительность;
  • Безопасность и уязвимости;
  • SEO-состояние и индексация;
  • Мобильная адаптация;
  • Технические ошибки и код.
Заказать диагностику
Михайлова Анастасия

Денис МАСТЕР своего дела. Вёл целый проект, работали с ним на протяжении 4х месяцев. Отзывчивый, понимающий с полуслова специалист. Стоимость услуг радует, а качество работы приводит в восторг.

Денис спасибо Вам от лица нашей строительной компании и от всего нашего персонала.

Михайлова Анастасия
Игорь Караваев

Обратился к Денису для восстановления сайта на WordPress после сбоя. Сделал, как и обещал, за сутки — сайт снова работает без ошибок. Профессионал своего дела, доходчиво объясняет, вежлив и тактичен. Однозначно рекомендую!

Игорь Караваев
Яна Веркулич

Денис, спасибо огромное за работу)) Очень тепло вспоминаю Вас и все что Вы сделали для моей работы и моего сайта.

Денис Профессионал с большой буквы, решает любые вопросы, отличный специалист))

Рекомендую к сотрудничеству, еще раз спасибо)

Яна Веркулич
Бюро Переводов

Денис оперативно и грамотно справляется со всеми поставленными задачами. Внес правки на англоязычную и русскоязычную версии сайта, учел все пожелания. Будем обращаться еще!

Бюро Переводов
Анастасия Виричева

Денис мастер своего дела, рекомендую его как специалиста.
Понимает, что нужно сделать и справляется с поставленной задачей в короткое время.

Делал сайт для салона красоты, просто и функционально.

Анастасия Виричева
Владимир

Очень много времени мучались с сайтом на OpenCart. «Специалисты» не могли нормально разобраться в проблеме, возникавшей при выполнении элементарной задачи.

Денис сделал это в два счета, также расписал подробно, в чем была проблема и как она решена. На 200% доволен. Даже не хочется его рекомендовать, потому что будет постоянно занят))

Владимир
Ксения Петровская

Денис оперативно ответил и помог решить проблему, которую я даже описать нормально не могла)) Мы сами что-то накрутили с корпоративной почтой — письма то уходили, то нет, в общем всё сломали.

Денис всё починил, теперь у нас нормальная почта, домен работает, письма приходят и уходят. Цена как заявлена — оплатили по факту проверки. Спасибо большое!

Ксения Петровская
Александр Кривуля

Заказал у Дениса доработать сайт на WordPress. При этом трудно себе представлял, что сам хочу. Благодаря профессионализму Дениса и его умению всё грамотно и просто объяснять, предлагать разные варианты решений — цель была достигнута.

Умение общаться доходчиво и терпеливо с клиентами — огромный плюс. Я очень доволен. Однозначно рекомендую!

Александр Кривуля
Кондитер мания

Прекрасный специалист, ответил и устранил ошибку на сайте за пару часов, сохранила контакт, будем по необходимости обращаться. Рекомендую!

Кондитер мания

Бесплатная настройка хостинга и домена

Регистрация хостинга на 1 месяц и домена .ru/.рф на 1 год входит в стоимость разработки сайта.

Подробнее

Разрабатываю сайты для клиентов по всей России:

Показать все города