Критическая ошибка на страницах – WP_DEBUG ничего не показывает

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

У нас есть несколько сайтов с пользовательской темой, создание которой нам помогли много лет назад. Когда мы обновляем PHP на сервере с версии 7.4.x до 8.2.x, мы получаем критическое сообщение об ошибке на большинстве страниц (заголовок загружается, но остальная часть страницы нет). Мы знаем, что это связано с файлами темы, но хотели бы получить более подробную информацию.

Когда мы включаем WP_DEBUG и многие сопутствующие параметры, мы просто не получаем никаких сообщений об ошибках или что-либо записанное в debug.log. Единственное сообщение об ошибке, которое мы можем получить, или которое вызовет запись в debug.log, это когда мы включаем более старый плагин, который выдает предупреждение о устаревании.

Следующее у нас сейчас в wp-config.php, но мы пробовали множество рекомендуемых опций, включая скрытие сообщения о фатальной ошибке.

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_DISPLAY', true );
define( 'WP_DEBUG_LOG', true );
define( 'SCRIPT_DEBUG', true );

Мы также пробовали отключить все плагины, что не дало никаких результатов.

И мы отредактировали файл php.ini для PHP 8.2 на сервере, установив display_errors = On (по умолчанию выключено).

  • Есть ли что-то еще, что мы можем попробовать, чтобы заставить отображаться сообщения об ошибках??

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

Критическая ошибка на страницах – WP_DEBUG не отображает ничего

Когда вы обновляете версию PHP на вашем сервере с 7.4.x до 8.2.x и получаете критическую ошибку на большинстве страниц, это может указывать на несовместимость вашей пользовательской темы с новой версией PHP. Поскольку вы упомянули, что заголовок загружается, а остальная часть страницы — нет, вполне вероятно, что какая-то функция или метод, используемый в ваших темах, больше не поддерживается или функционирует иначе в PHP 8.2.x.

Шаги для устранения проблем

Вот несколько шагов и рекомендаций, которые помогут вам выявить и, возможно, устранить причины возникновения критической ошибки и отсутствия сообщений об ошибках в WP_DEBUG.

  1. Проверка на наличие ошибок синтаксиса или устаревших функций:

    • Пройдитесь по файлам вашей темы и ищите устаревшие функции. PHP 8.2 может быть менее tolerant по отношению к устаревшим функциям, которые в предыдущих версиях могли не вызывать ошибок.
    • Используйте редакторы кода с поддержкой синтаксических проверок, чтобы находить возможные ошибки.
  2. Настройка конфигурации PHP:

    • Убедитесь, что в вашем php.ini установлены следующие параметры:
      display_errors = On
      display_startup_errors = On
      error_reporting = E_ALL
    • Это позволит вам отслеживать даже самые незначительные ошибки, возникающие на старте.
  3. Использование альтернативных методов отладки:

    • Попробуйте добавить следующий код в файл functions.php вашей темы, чтобы принудительно вывести ошибки:
      ini_set('display_errors', 1);
      ini_set('display_startup_errors', 1);
      error_reporting(E_ALL);
    • Это обеспечит вывод ошибок непосредственно на страницы, что может дать вам больше информации о том, что именно идет не так.
  4. Отключение кэширования:

    • Убедитесь, что вы отключили все системы кэширования (как на уровне плагинов, так и на уровне сервера), чтобы убедиться, что вы видите последние изменения конфигурации.
  5. Проверка конфликта с плагинами:

    • Вы упомянули, что отключили все плагины, но стоит также тщательно проверить, являются ли все плагины по-прежнему совместимыми с PHP 8.2. Обновите плагины до последних версий перед повторной проверкой.
  6. Анализ журналов сервера:

    • Проверьте журналы ошибок вашего веб-сервера (например, Apache или Nginx). Простое наличие критической ошибки в WordPress не всегда захватывает все детали — журналы сервера могут содержать более информативные сообщения.
  7. Временная смена на стандартную тему:

    • Если ни один из вышеперечисленных вариантов не помог, попробуйте переключиться на стандартную тему WordPress, такую как Twenty Twenty-One. Если проблема исчезает, вы можете быть уверены, что проблема связана именно с вашей пользовательской темой.
  8. Обслуживание вашего кода:

    • Убедитесь, что код вашей темы следует лучшим практикам разработки WordPress, и посмотрите документацию по обновлению, чтобы адаптировать существующие функции к новым требованиям PHP.

В итоге, когда вы проделаете все шаги, описанные выше, у вас будет больше шансов выяснить, в чем конкретно заключается ошибка. Если, несмотря на все усилия, проблемы сохраняются, возможно, вам стоит рассмотреть возможность привлечения специалиста по PHP или WordPress для более глубокого анализа вашей темы.

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

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