Файл 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
- Сначала скачайте копию. Храните её на своём компьютере. Копию, оставленную на сервере под именем вроде
wp-config.php.bak, может быть можно прочитать в браузере, потому что сервер больше не считает её файлом PHP. - Откройте файл в простом текстовом редакторе. Руководство WordPress по редактированию файлов называет подходящими Notepad++, Sublime Text и Visual Studio Code и предостерегает от Google Docs и Microsoft Word, потому что текстовые процессоры меняют кавычки и могут добавлять код, который ломает файлы.
- Найдите строку “stop editing” и поместите новые строки прямо над ней. Если настройка уже определена выше, измените ту строку.
- Сохраните и загрузите файл, затем откройте сайт в приватном окне браузера, а также одну страницу в wp-admin.
- Если что-то сломалось, верните свою копию. Это отменит правку, даже если 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. Веб-сервер всё равно должен читать файл, поэтому, если сайт перестал загружаться, обратитесь к хостингу.
Источники
- WordPress Advanced Administration: wp-config.php, Hardening WordPress, File permissions, Editing files
- Исходный код WordPress: wp-config-sample.php, wp-load.php, default-constants.php, setup-config.php, cron.php
- Руководство по PHP: Constants, Booleans
Соберите нужные настройки без ручного ввода, включая свежие ключи безопасности, с помощью бесплатного генератора 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. Веб-сервер всё равно должен читать файл, поэтому, если сайт перестал загружаться, обратитесь к хостингу.