Файл wp-config.php — подробное описание настроек WordPress

И снова я вас приветствую!

Все, у кого есть свой сайт на WordPress, знают о таком файле как wp-config.php, но не все знают как правильно его настроить. 90% пользователей вписывают в него только данные для подключения к базе.

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

Файл wp-config

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

Ко мне часто поступают вопросы про хостинг, которым я пользуюсь и поэтому решил указать хостинг в статье https://sprinthost.ru. Вы можете попробовать попользоваться хостингом 30 дней бесплатно. Чтобы понять, как будет работать Ваш сайт на этом хостинге просто перенести свой сайт (в этом поможет поддержка хостинга бесплатно) и и таким образом сможете понять подходит хостинг Вам или нет. На этом хостинге находятся сайты с 20 000 тысяч посещаемость и сайты чувствуют себя отлично. Рекомендую! Да, если делать оплату на 1 год то получаете скидку 25%. И что мне нравится - тех. поддержка всегда помогает в технических вопросах, за что им спасибо. Как Вы понимаете не всегда проходит всё гладко и нет желания, чтобы сайт не был доступен тем самым страдал трафик и доход.

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

Базовый файл wp-config.php

Когда вы впервые устанавливаете WordPress, вас просят ввести необходимую информацию, такую как сведения о базе данных и префикс таблицы. Иногда ваш хостер настроит WordPress для вас, и вам не нужно будет запускать настройку вручную. Но когда вы запускаете 5-минутную установку вручную, вам будет предложено ввести некоторые наиболее важные данные, хранящиеся в wp-config.

Базовый файл wp-config

Когда вы запустите установку, вам потребуется ввести данные, которые хранятся в файле wp-config.php

Вот основной файл wp-config.php:

    //** Настройки MySQL - вы можете получить эту информацию у вашего хостера **//
    /** Название базы данных для WordPress */
    define('DB_NAME', 'database_name_here');

    /** Имя пользователя базы данных MySQL */
    define('DB_USER', 'username_here');

    /** Пароль базы данных MySQL */
    define('DB_PASSWORD', 'password_here');

    /** Имя хоста MySQL */
    define('DB_HOST', 'localhost');

    /** Кодировка базы данных для использования при создании таблиц базы данных. */
    define('DB_CHARSET', 'utf8');

    /** Тип сортировки базы данных. Не меняйте это, если сомневаетесь. */
    define('DB_COLLATE', '');

    define('AUTH_KEY',		'поместите свою уникальную фразу здесь');
    define('SECURE_AUTH_KEY',	'поместите свою уникальную фразу здесь');
    define('LOGGED_IN_KEY',		'поместите свою уникальную фразу здесь');
    define('NONCE_KEY',		'поместите свою уникальную фразу здесь');
    define('AUTH_SALT',		'поместите свою уникальную фразу здесь');
    define('SECURE_AUTH_SALT',	'поместите свою уникальную фразу здесь');
    define('LOGGED_IN_SALT',	'поместите свою уникальную фразу здесь');
    define('NONCE_SALT',		'поместите свою уникальную фразу здесь');

    $table_prefix  = 'wp_';

    /* Вот и все, дальше не редактировать! Счастливого ведения блога. */

Обычно этот файл генерируется автоматически при запуске установки, но иногда WordPress не имеет прав для записи в папку установки. В этой ситуации вы должны создать пустой файл wp-config.php, скопировать и вставить содержимое из wp-config-sample.php и установить правильные значения для всех определенных констант. Когда вы закончите, загрузите ваш файл в корневую папку и запустите установку WordPress.

Примечание: определения констант и инструкции PHP приходят в определенном порядке, который мы никогда не должны менять. И мы никогда не должны добавлять содержимое под следующей строкой комментария:
 /* Вот и все, дальше не редактировать! Счастливого ведения блога. */

Сначала приведу определения констант базы данных, которые вы должны были получить от своего хостера:

  • DB_NAME
  • DB_USER
  • DB_PASSWORD
  • DB_HOST
  • DB_CHARSET
  • DB_COLLATE

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

Переменная «$table_prefix» хранит префикс всех таблиц WordPress. К сожалению, любой знает его значение по умолчанию, и это может открыть базу данных WordPress для уязвимости, которую можно легко исправить, установив пользовательское значение «$table_prefix» при запуске установки.

Чтобы изменить префикс таблицы на работающем веб-сайте, необходимо выполнить несколько запросов к базе данных, а затем вручную отредактировать файл wp-config.php. Если у вас нет доступа к базе данных или вы не обладаете необходимыми знаниями для создания пользовательских запросов, вы можете установить плагин, такой как Change Table Prefix (правда он давно не обновлялся), который будет переименовывать таблицы базы данных и имена полей, а также обновлять файл конфигурации без риска.

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

До сих пор анализ был ограничен базовой конфигурацией. Но у нас есть много констант, которые мы можем определить, чтобы включить функции, настроить и защитить установку.

Базовая конфигурация: редактирование файловой системы

Файловая система WordPress хорошо известна пользователям и хакерам. По этой причине вы можете рассмотреть возможность изменения встроенной файловой структуры путем перемещения определенных папок в произвольных местах и установки соответствующих URL-адресов и путей в файле wp-config.

Во-первых, мы можем переместить папку содержимого, определив две константы. Первый устанавливает полный путь к каталогу:

define( 'WP_CONTENT_DIR', dirname(__FILE__) . '/site/wp-content' );

Второй устанавливает новый URL каталога:

define( 'WP_CONTENT_URL', 'http://example.com/site/wp-content' );

Мы можем переместить только папку плагинов, определив следующие константы:

    define( 'WP_PLUGIN_DIR', dirname(__FILE__) . '/wp-content/mydir/plugins' );
    define( 'WP_PLUGIN_URL', 'http://example.com/wp-content/mydir/plugins' );

Таким же образом мы можем переместить папку загрузки, установив новый путь к каталогу:

define( 'UPLOADS', 'wp-content/mydir/uploads' );
Примечание: все пути относятся к «ABSPATH», и они не должны содержать начальный слеш.

Когда закончите, расставьте папки и перезагрузите WordPress.

Базовая конфигурация

Изображение показывает встроенную файловую структуру по сравнению с настроенной структурой

Невозможно переместить папку /wp-content/themes из файла wp-config, но мы можем зарегистрировать новый каталог темы в плагине или файле functions.php темы.

Возможности для разработчиков: режим отладки и сохранение запросов

Если вы разработчик (как и я), вы можете заставить WordPress отображать ошибки и предупреждения, которые помогут вам в отладке тем и плагинов. Чтобы включить режим отладки, вам просто нужно установить «WP_DEBUG» в значение «true», как показано ниже:

define( 'WP_DEBUG', true );

«WP_DEBUG» по умолчанию имеет значение «false». Если вам нужно отключить режим отладки, вы можете просто удалить определение или установить значение константы в «false».

Когда вы работаете на живом сайте, вы должны отключить режим отладки. Ошибки и предупреждения никогда не должны показываться зрителям сайта, поскольку они могут предоставить хакерам ценную информацию. Но что делать, если вам все равно придется отлаживать?

В таких ситуациях вы можете заставить WordPress вести таблицу ошибок и предупреждений в файле «debug.log», расположенном в папке /wp-content. Чтобы включить эту функцию, скопируйте и вставьте следующий код в файл wp-config.php:

    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_LOG', true );
    define( 'WP_DEBUG_DISPLAY', false );
    @ini_set( 'display_errors', 0 );

Чтобы эта функция работала, сначала нужно включить режим отладки. Затем, установив «WP_DEBUG_LOG» в значение «true», мы заставляем WordPress хранить сообщения в файле «debug.log», а при определении «WP_DEBUG_DISPLAY» в «false» скрываем их с экрана. Наконец, мы устанавливаем в 0 значение переменной PHP — «display_errors» чтобы сообщения об ошибках не выводились на экран. Wp-config никогда не загружается из кеша. По этой причине это хорошее место для переопределения настроек «php.ini».

Примечание. Это отличная функция, которой вы можете воспользоваться, чтобы регистрировать сообщения, которые WordPress не печатал бы на экране. Например, когда «publish_post» запускает действие, WordPress загружает скрипт, который сохраняет данные, а затем перенаправляет пользователя на страницу редактирования сообщения. В этой ситуации вы можете регистрировать сообщения, но не распечатывать их на экране.

Другая константа отладки определяет версии скриптов и стилей для загрузки. Установите «SCRIPT_DEBUG» в значение «true», если вы хотите загружать несжатые версии:

define( 'SCRIPT_DEBUG', true );

Если ваша тема или плагин показывает данные, полученные из базы данных, вы можете сохранить сведения о запросе для последующего просмотра. Константа «SAVEQUERIES» заставляет WordPress хранить информацию о запросах в массиве «$wpdb->queries». Эти сведения будут напечатаны, добавив следующий код в шаблон подвала вашего сайта:

    if ( current_user_can( 'administrator' ) ) {
        global $wpdb;
        echo '<pre>';
        print_r( $wpdb->queries );
        echo '</pre>';
    }

Настройки, связанные с контентом

Когда ваш сайт вырастет, вы можете захотеть уменьшить количество пост-редакций. По умолчанию WordPress автоматически сохраняет изменения каждые 60 секунд. Мы можем изменить это значение, установив пользовательский интервал в wp-config следующим образом:

define( 'AUTOSAVE_INTERVAL', 160 );

Конечно, вы также можете уменьшить интервал автосохранения.

Каждый раз, когда мы сохраняем наши изменения, WordPress добавляет строку в таблицу сообщений, чтобы мы могли восстановить предыдущие версии сообщений и страниц. Это полезный функционал, который может стать проблемой, когда наш сайт станет больше. К счастью, мы можем уменьшить максимальное количество сохраняемых пост-ревизий или вообще отключить эту функцию.

Если вы хотите отключить публикацию ревизий, определите следующую константу:

define( 'WP_POST_REVISIONS', false );

Если вы хотите ограничить максимальное количество ревизий, добавьте следующую строку:

define( 'WP_POST_REVISIONS', 10 );

По умолчанию WordPress хранит удаленные сообщения, страницы, вложения и комментарии в течение 30 дней, а затем удаляет их навсегда. Мы можем изменить это значение с помощью следующей константы:

define( 'EMPTY_TRASH_DAYS', 10 );

Мы даже можем отключить корзину, установив для нее значение 0, но учтите, что WordPress больше не позволит вам восстанавливать содержимое.

Разрешенный объем памяти

Иногда вы можете получить сообщение, подобное следующему:

Fatal error: Allowed memory size of xxx bytes exhausted …

Максимальный объем памяти зависит от конфигурации сервера. Если у вас нет доступа к файлу php.ini, вы можете увеличить ограничение памяти только для WordPress, установив константу «WP_MEMORY_LIMIT» в файле wp-config. По умолчанию WordPress пытается выделить 40 МБ для PHP для отдельных сайтов и 64 МБ для многосайтовой установки. Конечно, если выделенная PHP память превышает 40 МБ (или 64 МБ), WordPress примет максимальное значение.

При этом, вы можете установить пользовательское значение с помощью следующей строки:

define( 'WP_MEMORY_LIMIT', '128M' );

При необходимости вы также можете установить максимальный предел памяти с помощью следующего оператора:

define( 'WP_MAX_MEMORY_LIMIT', '256M' );

Автоматические обновления

Начиная с версии 3.7, WordPress поддерживает автоматические обновления для выпусков безопасности. Это важная функция, которая позволяет администраторам сайтов постоянно поддерживать безопасность своего сайта.

Вы можете отключить все автоматические обновления, определив следующую константу:

define( 'AUTOMATIC_UPDATER_DISABLED', true );

Возможно, не стоит отключать обновления безопасности, но это ваш выбор.

По умолчанию автоматические обновления не работают с основными выпусками, но вы можете включить любые основные обновления, определяя их «WP_AUTO_UPDATE_CORE» следующим образом:

    # Отключает все основные обновления:
    define( 'WP_AUTO_UPDATE_CORE', false );

    # Включает все обновления, включая основные и второстепенные:
    define( 'WP_AUTO_UPDATE_CORE', true );

Значение по умолчанию «minor»:

define( 'WP_AUTO_UPDATE_CORE', 'minor' );

Дополнительная константа отключает автообновления (и любое обновление или изменение любого файла). Если вы установите «DISALLOW_FILE_MODS» в значение «true», все изменения файлов будут отключены, даже установки и обновления тем и плагинов. По этой причине его использование не рекомендуется.

Настройки безопасности

Мы можем использовать файл wp-config для повышения безопасности сайта. В дополнение к изменениям в файловой структуре, которые мы рассмотрели выше, мы можем заблокировать некоторые функции, которые могут открыть ненужные уязвимости. Прежде всего, мы можем отключить редактор файлов, представленный в панели администратора. Следующая константа скроет экран «Appearance Editor»:

define( 'DISALLOW_FILE_EDIT', true );
Примечание: учтите, что некоторые плагины не смогут работать должным образом, если эта константа определена как «true».

Настройки безопасности

Функцией безопасности является администрирование через SSL. Если вы приобрели сертификат SSL и он правильно настроен, вы можете заставить WordPress передавать данные через SSL при любом входе в систему и сеансе администратора. Используйте следующую константу:

define( 'FORCE_SSL_ADMIN', true );

Проверьте Кодекс, если вам нужна дополнительная информация об администрировании через SSL.

Две другие константы позволяют блокировать внешние запросы и выводить список разрешенных хостов.

    define( 'WP_HTTP_BLOCK_EXTERNAL', true );
    define( 'WP_ACCESSIBLE_HOSTS', 'example.com,*.anotherexample.com' );

В этом примере мы сначала отключили все обращения с внешних хостов, затем перечислили разрешенные хосты, разделенные запятыми (подстановочные знаки разрешены).

Другие дополнительные настройки

«WP_CACHE» — значение «true» включает скрипт wp-content/advanced-cache.php. Эта константа действует только если вы устанавливаете постоянный плагин кэширования.

«CUSTOM_USER_TABLE» и «CUSTOM_USER_META_TABLE» используются для установки пользовательских таблиц, отличных от таблиц «wp_users» и «wp_usermeta» по умолчанию. Эти константы включают полезную функцию, которая позволяет пользователям сайта получать доступ к нескольким веб-сайтам только с одной учетной записью. Чтобы эта функция работала, все установки должны совместно использовать одну и ту же базу данных.

Начиная с версии 2.9, WordPress поддерживает автоматическую оптимизацию базы данных. Благодаря этой функции, установив «WP_ALLOW_REPAIR» в значение «true», WordPress автоматически восстановит поврежденную базу данных.

WordPress создает новый набор изображений каждый раз, когда вы редактируете изображение. Если вы восстановите исходное изображение, все созданные наборы останутся на сервере. Вы можете перезаписать это поведение, установив «IMAGE_EDIT_OVERWRITE» значение в «true», чтобы при восстановлении исходного изображения все изменения были удалены с сервера.

Блокировка wp-config.php

Теперь мы знаем, почему wp-config.php является одним из наиболее важных файлов WordPress. Итак, почему мы не скрываем это от хакеров? Прежде всего, мы можем переместить wp-config на один уровень выше корневой папки WordPress (всего на один уровень). Однако этот метод немного противоречив, поэтому я бы предложил принять другие решения для защиты файла. Если ваш сайт работает на веб-сервере Apache, вы можете добавить следующие директивы в файл .htaccess:

    <files wp-config.php>
    order allow,deny
    deny from all
    </files>

Если сайт работает на Nginx, вы можете добавить следующую директиву в файл конфигурации:

location ~* wp-config.php { deny all; }
Примечание. Эти инструкции следует добавлять только после завершения настройки.

Если ваш сайт прошел несколько миграций или вы приобрели его у кого-то другого, рекомендуется создать новый набор ключей безопасности WordPress. Эти ключи представляют собой набор случайных величин, которые улучшают шифрование информации, хранящейся в файлах «cookie» пользователя. Начиная с WordPress 2.7, было 4 разных ключа: «AUTH_KEY», «SECURE_AUTH_KEY», «LOGGED_IN_KEY» и «NONCE_KEY».

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

Блокировка wp-config

Ключи безопасности WordPress

И наконец, вы должны дважды проверить и убедиться, что ваши права доступа усилены в вашем файле wp-config.php. Обычно для файлов в корневом каталоге сайта WordPress устанавливается значение 644, что означает, что файлы доступны для чтения и записи для владельца файла и для чтения пользователями в группе, владеющей этим файлом, и для чтения всеми остальными. Согласно документации WordPress, разрешения для файла wp-config.php должны быть установлены на 440 или 400, чтобы другие пользователи на сервере не могли его прочитать. Вы можете легко изменить это с вашим FTP-клиентом.

Права доступа

Права доступа для wp-config.php

Резюме

В этом посте я перечислил много констант WordPress, которые мы можем определить в файле wp-config. Некоторые из этих констант имеют общее использование, и их функции легко понять. Другие константы включают расширенные функции, которые требуют глубоких знаний WordPress и администрирования сайта.

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

До скорых встреч!


Обо мне
Юрич:
Занимаюсь созданием сайтов на WordPress более 6 лет. Ранее работал в нескольких веб-студиях и решил делиться своим опытом на данном сайте. Пишите комментарии, буду рад общению.

Заказать сайт