Файл 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, Права доступу до файлів, Редагування файлів
- Вихідний код WordPress: wp-config-sample.php, wp-load.php, default-constants.php, setup-config.php, cron.php
- Посібник PHP: Константи, Логічні значення
Створіть потрібні налаштування без ручного набору, зокрема нові ключі безпеки, за допомогою безкоштовного генератора 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. Вебсервер однаково має читати файл, тому якщо сайт перестане завантажуватися, зверніться до хостинг-провайдера.