Фатальная ошибка почти наверняка вызвана плагином d-wp (папка d).

Без рубрики
Это очень агрессивный плагин: он сам прописывает include в wp-config.php и index.php, создаёт drop-in wp-content/db.php и перехватывает кучу вещей.

В коде куча относительных require_once('includes/...') без __DIR__. Когда PHP ищет файл, он смотрит относительно текущей рабочей директории (обычно корень сайта), а не относительно файла плагина. В итоге:

  • Failed opening required 'includes/d_config.php'
  • Call to undefined function d_is_wp_login_page() / d_regex_replace() / Class "d_config" not found
  • или ошибка в drop-in db.php (он тоже опирается на функции, которые ещё не загружены)

Плюс кэш может отдавать битые/старые страницы, а в конфиге включены CACHE, CACHE_DB, CACHE_INDEX и т.д.

1. Быстрое восстановление сайта (сделай прямо сейчас)

Через FTP / файловый менеджер хостинга / SSH:

  1. Переименуй папку плагина
    wp-content/plugins/d → wp-content/plugins/d_off
    (или просто удали временно).
  2. Отредактируй wp-config.php (в корне сайта)
    Найди и удали строку вида:
   include('wp-content/plugins/d/d_ic.php');

или

   require(...d_ic.php...);

(ищи по d_ic или plugins/d).

  1. Отредактируй index.php (в корне сайта)
    Удали строку:
   include('wp-content/plugins/d/d_ii.php');
  1. Удали/переименуй drop-in:
  • wp-content/db.php → db.php.off (или удали)
  1. (по желанию) очисти кэш плагина: удали всё содержимое wp-content/plugins/d_off/cache/ (или оставь — не критично).

После этих действий сайт должен подняться без плагина.

2. Если хочешь оставить плагин — исправь пути

Относительные require нужно заменить на __DIR__. Вот правильные варианты ключевых файлов:

d/d_ic.php (то, что вставляется в wp-config.php):

<?php
define('D_IC', true);

require_once(__DIR__ . '/includes/d_config.php');

if (DISABLE_CRON) define('DISABLE_WP_CRON', true);
if (DISABLE_REVISIONS) define('WP_POST_REVISIONS', false);
if (DISABLE_TRASH) define('EMPTY_TRASH_DAYS', 0);

if (DISABLE_AUTOUPDATE) {
  define('AUTOMATIC_UPDATER_DISABLED', true);
  define('WP_AUTO_UPDATE_CORE', false);
}

d/d_ii.php (то, что вставляется в index.php):

<?php
define('D_II', true);

require_once(__DIR__ . '/includes/d_config.php');
require_once(__DIR__ . '/includes/d_cache.php');
require_once(__DIR__ . '/includes/d_remote.php');

if (D_GLOBAL_IGNORE) {
  $current_url = d_current_url();
  foreach (explode("\n", d_d(D_GLOBAL_IGNORE_URLS)) as $url) {
    if (preg_match('#'.str_replace('\*', '.*', preg_quote($url)).'\|#i', $current_url.'|')) return;
  }
}

if (D_PRE_PHP && D_PRE_PHP_CODE != '') {
  eval(d_d(str_replace(array('<?php', '<?PHP', '<?', '?>'), '', D_PRE_PHP_CODE)));
}

if (D_REMOTE_CONTROL) d_remote::get()->call();

if (CACHE || CACHE_INDEX) d_cache::get()->load();

В d/d.php (начало конструктора):

require_once(__DIR__ . '/includes/d_config.php');
require_once(__DIR__ . '/includes/d_cache.php');

В d/includes/d_config.php (самая первая строка после <?php):

require_once(__DIR__ . '/d_helpers.php');

После правок:

  • Переименуй папку обратно в d
  • Заново активируй плагин в админке (он снова пропишет include’ы, но уже с правильными путями внутри)
  • Или вручную верни строки include в wp-config.php и index.php, если нужно.

3. Дополнительные рекомендации

  • Временно отключи кэш в d/d_config.php (или через админку плагина, если зайдёт):
  define('CACHE', false);
  define('CACHE_INDEX', false);
  define('CACHE_DB', false);

Потом очисти папку cache/.

  • Включи отладку на время:
  define('WP_DEBUG', true);
  define('WP_DEBUG_LOG', true);
  define('WP_DEBUG_DISPLAY', false);

Смотри wp-content/debug.log.

  • Плагин очень старый по подходу (модифицирует ядровые файлы, подменяет wpdb, отключает nonce и т.д.). На PHP 8.1–8.3 и свежих версиях WordPress он легко ломается. Если после починки путей снова будут ошибки — лучше искать более современную альтернативу (LiteSpeed Cache / WP Rocket / Redis Object Cache + нормальный SEO-плагин).
  • В кэше и на страницах сайта очень много мусорного AI-текста («Unfortunately, it seems like there is no text to rewrite…», «Here is the rewritten text…» и т.п.). Это не причина фатала, но сильно портит сайт. Лучше переписать/почистить контент.

Если после удаления include’ов и папки плагина сайт всё равно падает — пришли точный текст ошибки из debug.log или из браузера (белый экран + сообщение), и разберём дальше.

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