Белый экран смерти на сайте WordPress

Вопрос или проблема

На моем сайте отображается белый экран смерти. Независимо от страницы, на которой вы находитесь, экран остается полностью белым. Административная панель WordPress не затронута и полностью доступна.

Мой сайт работает на LAMP, поэтому я использую сервер Ubuntu, PHP (версия: 8.3), Apache2, MySQL и WordPress.

Сайт еще работал накануне без каких-либо проблем, и я не вносил никаких серьезных изменений в сайт в течение нескольких дней (без новых плагинов, тем, нового кода или чего-либо еще). Единственное изменение касалось Cloudflare. Поскольку у меня есть второй тестовый сайт на отдельном тестовом веб-сервере и я не могу запускать оба через стандартный порт Https, я изменил тестовый сайт на порт 2053. Для этого я также создал рабочего в Cloudflare, который обеспечивает перенаправление трафика на правильный IP с портом (т.е.: 94.XXX.XXX.XXX:2053). Только после этого изменения я снова посетил свой сайт и заметил, что он имеет белый экран смерти. К сожалению, отмена всех изменений в Cloudflare не помогла.

Я также уже пробовал следующее:

  • Я деактивировал Cloudflare
  • Деактивировал все плагины
  • Сменил тему (с New Twenty Four на Astra)
  • Активировал логи отладки WordPress (к сожалению, на сайте не отображается сообщение об ошибке)
  • Перезагрузка Ubuntu и обновление системы
  • .htaccess удален и приняты стандартные настройки WordPress
  • Мануальная проверка базы данных Mysql на наличие ошибок (ничего не найдено)

Журнал отладки WP:


[12-Oct-2024 08:30:24 UTC] PHPDeprecated:  ltrim(): Передача null в параметр #1 ($string) типа string устарела в /var/www/html/wp-includes/formatting.php на строке 4482
[12-Oct-2024 08:33:06 UTC] Успешно загружены схемы сервисов из ответа сервера. (fetch_service_schemas_from_connect_server)
[12-Oct-2024 08:33:10 UTC] Ошибка в базе данных WordPress: Обнаружен взаимоблокировка при попытке получить блокировку; попробуйте перезапустить транзакцию для запроса
INSERT INTO wp_actionscheduler_actions ( `hook`, `status`, `scheduled_date_gmt`, `scheduled_date_local`, `schedule`, `group_id`, `priority`, `args` )
SELECT 'wp_mail_smtp_queue_process', 'pending', '2024-10-12 08:33:10', '2024-10-12 08:33:10', 'O:32:\"ActionScheduler_IntervalSchedule\":5:{s:22:\"\0*\0scheduled_timestamp\";i:1728721990;s:18:\"\0*\0first_timestamp\";i:1728721990;s:13:\"\0*\0recurrence\";i:60;s:49:\"\0ActionScheduler_IntervalSchedule\0start_timestamp\";i:1728721990;s:53:\"\0ActionScheduler_IntervalSchedule\0interval_in_seconds\";i:60;}', 5, 10, '[null]' FROM DUAL
WHERE (
SELECT action_id FROM wp_actionscheduler_actions
WHERE status IN ( 'pending', 'in-progress' )
AND hook = 'wp_mail_smtp_queue_process'
AND `group_id` = 5
 LIMIT 1 ) IS NULL сделано путем require_once('wp-load.php'), require_once('wp-config.php'), require_once('wp-settings.php'), do_action('init'), WP_Hook->do_action, WP_Hook->apply_filters, WPMailSMTP\Core->get_tasks, WPMailSMTP\Tasks\Tasks->init,debug.log

Журналы ошибок Apache2:

[Sat Oct 12 09:00:07.065118 2024] [mpm_prefork:notice] [pid 18030] AH00163: Apache/2.4.58 (Ubuntu) OpenSSL/3.0.13 настроен -- продолжаем обычные операции
[Sat Oct 12 09:00:07.065154 2024] [core:notice] [pid 18030] AH00094: Командная строка: '/usr/sbin/apache2'
[Sat Oct 12 09:50:49.475939 2024] [mpm_prefork:error] [pid 18030] AH00161: сервер достиг настройки MaxRequestWorkers, рассмотрите возможность увеличения настройки MaxRequestWorkers
[Sat Oct 12 09:53:56.967559 2024] [mpm_prefork:notice] [pid 18030] AH00170: пойман SIGWINCH, отключение выполнено корректно
[Sat Oct 12 09:53:57.048545 2024] [mpm_prefork:notice] [pid 19229] AH00163: Apache/2.4.58 (Ubuntu) OpenSSL/3.0.13 настроен -- продолжаем обычные операции
[Sat Oct 12 09:53:57.048584 2024] [core:notice] [pid 19229] AH00094: Командная строка: '/usr/sbin/apache2'
[Sat Oct 12 09:55:08.352714 2024] [mpm_prefork:error] [pid 19229] AH00161: сервер достиг настройки MaxRequestWorkers, рассмотрите возможность увеличения настройки MaxRequestWorkers
[Sat Oct 12 10:06:48.686732 2024] [mpm_prefork:notice] [pid 19229] AH00170: пойман SIGWINCH, отключение выполнено корректно
[Sat Oct 12 10:07:14.356756 2024] [mpm_prefork:notice] [pid 1185] AH00163: Apache/2.4.58 (Ubuntu) OpenSSL/3.0.13 настроен -- продолжаем обычные операции
[Sat Oct 12 10:07:14.356872 2024] [core:notice] [pid 1185] AH00094: Командная строка: '/usr/sbin/apache2'

К сожалению, все безуспешно. Я не знаю, откуда возникает ошибка, и что еще я могу сделать.

Обновление:

Благодаря отличному ответу пользователя я деактивировал плагин wp mail и попытался получить доступ к сайту через localhost, что привело к тому же белому экрану. Таким образом, Cloudflare, вероятно, не является причиной. Вместо Astra я теперь активировал тему Twenty Twenty Three и у меня появились следующие сообщения об ошибках при использовании wp-cli или команды “wp core verify-checksums”:

Внимание: Файл не соответствует контрольной сумме: wp-blog-header.php Внимание: Файл не существует: wp-config-sample.php Ошибка: Установка WordPress не соответствует контрольным суммам.

Вот как выглядит мой wp-config.php, на данный момент он выглядит нормально для меня:

https://pastebin.com/6vevqBe3

Спасибо за вашу помощь!

Ответ или решение

Белый экран смерти на сайте WordPress: Полное руководство по диагностике и устранению

Белый экран смерти (White Screen of Death или WSOD) — это распространённая проблема, с которой могут столкнуться владельцы сайтов на WordPress. Ваша ситуация, в которой сайт отображает только белый экран при доступе к страницам, но административная панель доступна, может быть вызвана рядом факторов. Давайте подробно разберём возможные причины и шаги для их устранения.

Возможные причины проблемы

  1. Ошибки в конфигурации: Изменения в среде (например, настройки Cloudflare) могут привести к проблемам. Учтите, что даже если вы вернули настройки обратно, кэш может продолжать демонстрировать старую версию страницы.

  2. Проблемы с плагинами или темами: Хотя вы уже отключили плагины и сменили тему, конфликты могут по-прежнему существовать. Некоторые плагины могут оставлять свои следы в базе данных или кэш, что может влиять на работу сайта.

  3. Перегрузка сервера: Логи Apache указывают на то, что сервер достиг максимального количества рабочих процессов (MaxRequestWorkers). Это может привести к перегрузкам и, как следствие, сбоям.

  4. Проблемы с кодом: Ошибки в коде (например, устаревшие функции) могут вызывать сбои. Лог PHP показывает, что в некоторых случаях есть предупреждения об использовании устаревших функций.

  5. Ошибки базы данных: Сообщение об ошибке Deadlock found when trying to get lock указывает, что произошло взаимное блокирование при обращении к базе данных, что также может повлиять на работу сайта.

  6. Повреждённые файлы ядра WordPress: Проверка с помощью wp core verify-checksums показала несоответствие контрольных сумм, что может означать повреждение файлов ядра.

Шаги по устранению проблемы

  1. Очистка кэша: Убедитесь, что вы очистили кэш Cloudflare и любой кэш, сохранённый на сервере (например, кэш браузера, кэш плагинов кэширования).

  2. Проверка файлов WordPress:

    • Переустановите ядро WordPress, чтобы восстановить повреждённые файлы. Это можно сделать напрямую через Панель управления или используя WP-CLI.
    • Убедитесь, что wp-config.php в правильном состоянии и без ошибок.
  3. Проверка плагинов и тем:

    • Временно переключитесь на стандартную тему (например, Twenty Twenty-Three) и отключите все плагины. После этого включайте плагины по одному, чтобы выявить возможные конфликты.
    • Если вы уже отключили все плагины и темы, попробуйте заново установить критические плагины, особенно те, которые ранее работали нормально.
  4. Мониторинг нагрузки на сервер:

    • Измените настройки MaxRequestWorkers в конфигурации Apache, увеличив значение, чтобы предотвратить перегрузку сервера.
    • Проверьте использование ресурсов сервера (CPU, RAM) через команду top или другие утилиты мониторинга.
  5. Использование режимов отладки:

    • Убедитесь, что в вашем wp-config.php файл включен отладочный режим:
      define('WP_DEBUG', true);
      define('WP_DEBUG_LOG', true);
      define('WP_DEBUG_DISPLAY', false);
    • Проверьте созданный файл debug.log в директории /wp-content/ для получения дополнительных деталей о проблемах.
  6. Резервное копирование и восстановление: Если проблема сохраняется, рассмотрите возможность восстановления сайта из резервной копии, если такая доступна.

  7. Обращение в техническую поддержку: Если вы исчерпали все варианты, может потребоваться помощь профессионала. Обратитесь в службу поддержки хостинга или к специалисту по WordPress.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...