Перейти к содержимому
Конфигурация

Файл wp-config.php в WordPress: что делает и как изменить

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

Опубликовано

wp-config.php — это файл, который сообщает WordPress, как подключаться к базе данных и как работать. Обычно он лежит в корневой папке установки, рядом с wp-admin и wp-content. Добавлять и менять настройки можно выше строки “That’s all, stop editing!” (по-русски: «на этом всё, прекратите редактирование!»), а два блока кода ниже этой строки лучше не трогать. Сначала сделайте резервную копию, потому что одна опечатка может вывести из строя весь сайт.

Главное

  • В файле хранятся пароль базы данных и ключи безопасности, поэтому относитесь к нему как к паролю и никогда не публикуйте его содержимое на форуме или в чате поддержки.
  • Свои настройки добавляйте выше строки “stop editing”. Последняя строка ниже неё загружает WordPress, и настройка после этой строки срабатывает слишком поздно.
  • В скачанном WordPress есть wp-config-sample.php. Настоящий wp-config.php создаётся при установке.
  • Не меняйте $table_prefix на рабочем сайте, правя только эту строку. WordPress поведёт себя так, будто он не установлен.

Где найти wp-config.php

Подключитесь по SFTP или откройте файловый менеджер хостинга и перейдите в папку, где лежат wp-admin, wp-includes и wp-content. Документация WordPress называет её корнем файлового каталога WordPress.

Если файла там нет, посмотрите на одну папку выше. Загрузчик WordPress сначала проверяет папку установки, затем родительскую папку, причём пропускает родительскую, если в ней есть свой wp-settings.php: это значит, что там находится другая установка WordPress.

Если файла нет ни там, ни там, WordPress отправляет посетителей на экран установки. Этот экран создаёт файл на основе wp-config-sample.php. Если записать в папку не получается, он показывает текст, который нужно вручную вставить в новый файл.

Что делает каждый стандартный раздел

wp-config-sample.php — это шаблон, и в нём такие части в таком порядке:

РазделЧто содержитМожно ли менять?
DB_NAME, DB_USER, DB_PASSWORD, DB_HOSTДанные для входа в базу данных. В шаблоне хостом указан localhost, а настоящие значения может сообщить ваш хостинг.Да, когда меняются данные базы. Неверное значение вызывает ошибку установки соединения с базой данных.
DB_CHARSET, DB_COLLATEКак текст хранится в базе данных. По умолчанию utf8mb4 и пустое значение.Комментарий в самом шаблоне к DB_COLLATE советует не менять его, если есть сомнения.
От AUTH_KEY до NONCE_SALTВосемь ключей и солей безопасности, используемых для cookie входа.Да. Их замена разлогинивает всех пользователей.
$table_prefixТекст в начале имени каждой таблицы базы данных, по умолчанию wp_.Только при установке, если вы не переименовываете ещё и таблицы и не обновляете сохранённые записи базы данных, в именах которых есть этот префикс.
WP_DEBUGРежим отладки, в шаблоне установлен в false.Да. Руководство о расположении журнала отладки показывает, как отправлять ошибки в файл.
Комментарий “custom values” (свои значения)Пустое место для ваших настроек, которое заканчивается строкой “stop editing”.Да, именно сюда идут ваши добавления.
ABSPATH и строка wp-settings.phpПуть к WordPress, затем строка, которая загружает всё остальное.Нет. Оставьте их как есть.

Новые ключи можно получить в один клик: сервис секретных ключей WordPress.org при каждой загрузке выдаёт свежий набор. Замените им все восемь строк.

В старых файлах может не быть комментария “custom values”, а вместо “Happy publishing” может стоять “Happy blogging”. Работают оба варианта, и правило остаётся прежним: добавляйте настройки выше этой строки.

Настройки, которые меняют чаще всего

Каждая из них занимает одну строку. Все они взяты из документации wp-config.php, а значения по умолчанию — из файла WordPress default-constants.php.

// Memory for the front end, then for wp-admin
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );

// Keep at most 3 revisions per post (false turns revisions off)
define( 'WP_POST_REVISIONS', 3 );

// Autosave every 180 seconds
define( 'AUTOSAVE_INTERVAL', 180 );

// Empty the trash after 7 days
define( 'EMPTY_TRASH_DAYS', 7 );

// Remove the theme and plugin file editor from wp-admin
define( 'DISALLOW_FILE_EDIT', true );

// Force HTTPS for logins and wp-admin
define( 'FORCE_SSL_ADMIN', true );

// Set the site addresses here
define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );

Копируйте только нужные строки. У некоторых из них есть детали, которые стоит знать:

  • Память: по умолчанию WordPress использует 40M, или 64M в мультисайте, и 256M для wp-admin, если PHP уже не разрешает больше. Если хостинг не позволяет менять лимит, WordPress использует лимит, который уже задан в PHP. Что делать в этом случае, описано в руководстве по нехватке памяти.
  • Редакции: по умолчанию включены. Укажите false, чтобы выключить их, или число, чтобы ограничить их количество.
  • Автосохранение и корзина: значения по умолчанию — 60 секунд и 30 дней. Значение 0 для EMPTY_TRASH_DAYS отключает корзину, и документация предупреждает, что тогда WordPress не будет просить подтверждения, когда кто-то нажимает “Delete Permanently” (Удалить навсегда).
  • Редактор файлов: руководство по защите говорит, что это не помешает злоумышленнику загрузить вредоносные файлы, хотя может остановить некоторые атаки. DISALLOW_FILE_MODS идёт дальше и блокирует ещё и установку и обновление плагинов и тем.
  • HTTPS: когда настройка «Адрес WordPress» уже начинается с https, WordPress сам устанавливает FORCE_SSL_ADMIN в true. Эта строка что-то меняет, только когда адрес не начинается с https.
  • Адреса сайта: они переопределяют сохранённые значения, не меняя того, что хранится в базе данных. Указывайте адрес вместе с https://.

Одна настройка требует больше планирования. define( 'DISABLE_WP_CRON', true ); не даёт посещениям страниц запускать запланированные задачи, поэтому сначала настройте на сервере задание cron для wp-cron.php, иначе запланированные записи и другие задачи по расписанию не выполнятся.

Как безопасно редактировать wp-config.php

  1. Сначала скачайте копию. Храните её на своём компьютере. Копию, оставленную на сервере под именем вроде wp-config.php.bak, может быть можно прочитать в браузере, потому что сервер больше не считает её файлом PHP.
  2. Откройте файл в простом текстовом редакторе. Руководство WordPress по редактированию файлов называет подходящими Notepad++, Sublime Text и Visual Studio Code и предостерегает от Google Docs и Microsoft Word, потому что текстовые процессоры меняют кавычки и могут добавлять код, который ломает файлы.
  3. Найдите строку “stop editing” и поместите новые строки прямо над ней. Если настройка уже определена выше, измените ту строку.
  4. Сохраните и загрузите файл, затем откройте сайт в приватном окне браузера, а также одну страницу в wp-admin.
  5. Если что-то сломалось, верните свою копию. Это отменит правку, даже если wp-admin не загружается.

Перенос файла выше корня сайта

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

  • В родительской папке не должно быть другой установки WordPress. Загрузчик игнорирует родительскую папку со своим wp-settings.php.
  • Уровень выше закрыт от посторонних, только если WordPress лежит в корне сайта. Если WordPress находится в подпапке вроде /blog/, уровень выше обычно всё ещё публичный.

То же руководство говорит, что, по мнению некоторых, перенос даёт минимальную пользу для безопасности, а при небрежном выполнении может создать серьёзные уязвимости. Поэтому считайте его необязательным. Для Apache руководство также приводит этот блок для начала файла .htaccess, который запрещает прямые запросы к файлу:

<Files "wp-config.php">
Require all denied
</Files>

Это правило вместе с другими разбирает наше руководство по безопасности .htaccess.

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

Документация WordPress приводит немного разные числа в зависимости от ситуации:

  • Руководство по защите говорит, что читать файл должны только вы и веб-сервер, что, по его словам, обычно означает 400 или 440.
  • Руководство по правам файлов указывает 440 или 400 на виртуальном хостинге с suexec, чтобы другие пользователи сервера не могли его прочитать. Также оно показывает 600 как защищённый пример.
  • Для обычных файлов WordPress это руководство указывает 644 или 640.

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

Частые ошибки

  • Вставка настройки после строки wp-settings.php. Эта строка загружает WordPress и задаёт значения по умолчанию. Константа PHP не может измениться во время выполнения скрипта, поэтому ваша строка ни на что не влияет.
  • Двойное определение одной настройки. Первая строка задаёт значение, а вторая не может его изменить. В руководстве PHP сказано, что повторное объявление константы устарело начиная с PHP 8.5, поэтому может появиться и сообщение. Прежде чем добавлять настройку, поищите её имя в файле.
  • Кавычки вокруг true или false. 'false' — это непустая строка, а PHP считает её истинной, то есть true. Пишите false без кавычек. А вот размерам вроде '256M' кавычки нужны.
  • Фигурные кавычки из текстового процессора или с веб-страницы. PHP нужны прямые кавычки, поэтому фигурные вызывают ошибку, из-за которой сайт не загружается.
  • Показ ошибок отладки на рабочем сайте. WP_DEBUG_DISPLAY по умолчанию равен true, поэтому, если включить только WP_DEBUG, ошибки появятся на странице для посетителей. Руководство о расположении журнала отладки показывает, как отправлять их в файл.
  • Оставленный включённым WP_ALLOW_REPAIR. Документация говорит включать его только при необходимости и отключать, как только проблема решена.

Часто задаваемые вопросы

Что такое wp-config.php в WordPress? Это файл конфигурации, который WordPress загружает при запуске. В нём хранятся доступ к базе данных, ключи безопасности и префикс таблиц, и именно сюда добавляют настройки вроде WP_DEBUG или WP_MEMORY_LIMIT.

Где находится файл wp-config.php? Обычно в корне установки WordPress, в папке, где также лежат wp-admin, wp-includes и wp-content. WordPress принимает его и на одну папку выше установки, если в той папке нет wp-settings.php.

Куда добавлять код в wp-config.php? Выше строки That’s all, stop editing! Happy publishing. В старых файлах там написано Happy blogging. Последняя строка ниже неё загружает WordPress, поэтому настройка, добавленная после этой строки, срабатывает слишком поздно.

Безопасно ли редактировать wp-config.php? Да, если у вас есть резервная копия и вы используете простой текстовый редактор. Одна опечатка может остановить загрузку всего сайта, включая wp-admin, поэтому сначала скачайте копию. Если после правки сайт сломался, верните копию на место.

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

Какие права должны быть у wp-config.php? Руководство WordPress по защите говорит, что читать файл должны только вы и веб-сервер, что обычно означает 400 или 440. Руководство по правам файлов также показывает 600. Веб-сервер всё равно должен читать файл, поэтому, если сайт перестал загружаться, обратитесь к хостингу.

Источники


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

FAQ

Вопросы

Что такое wp-config.php в WordPress?

Это файл конфигурации, который WordPress загружает при запуске. В нём хранятся доступ к базе данных, ключи безопасности и префикс таблиц, и именно сюда добавляют настройки вроде WP_DEBUG или WP_MEMORY_LIMIT.

Где находится файл wp-config.php?

Обычно в корне установки WordPress, в папке, где также лежат wp-admin, wp-includes и wp-content. WordPress принимает его и на одну папку выше установки, если в той папке нет wp-settings.php.

Куда добавлять код в wp-config.php?

Выше строки That's all, stop editing! Happy publishing. В старых файлах там написано Happy blogging. Последняя строка ниже неё загружает WordPress, поэтому настройка, добавленная после этой строки, срабатывает слишком поздно.

Безопасно ли редактировать wp-config.php?

Да, если у вас есть резервная копия и вы используете простой текстовый редактор. Одна опечатка может остановить загрузку всего сайта, включая wp-admin, поэтому сначала скачайте копию. Если после правки сайт сломался, верните копию на место.

Что будет, если удалить wp-config.php?

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

Какие права должны быть у wp-config.php?

Руководство WordPress по защите говорит, что читать файл должны только вы и веб-сервер, что обычно означает 400 или 440. Руководство по правам файлов также показывает 600. Веб-сервер всё равно должен читать файл, поэтому, если сайт перестал загружаться, обратитесь к хостингу.