Plik wp-config.php w WordPressie: co robi i jak go edytować
wp-config.php przechowuje dane logowania do bazy, klucze bezpieczeństwa i ustawienia WordPressa. Zobacz, gdzie leży, co robi i jak bezpiecznie go edytować.
wp-config.php to plik, który mówi WordPressowi, jak połączyć się z bazą danych i jak działać. Zwykle leży w głównym katalogu instalacji, obok wp-admin i wp-content. Możesz bezpiecznie dodawać i zmieniać ustawienia nad linią “That’s all, stop editing!” (po polsku: „to wszystko, koniec edycji!”), a dwa bloki kodu pod nią zostaw w spokoju. Najpierw zrób kopię zapasową, bo jedna literówka może wyłączyć całą witrynę.
Najważniejsze informacje
- Plik zawiera hasło do bazy danych i klucze bezpieczeństwa, więc traktuj go jak hasło i nigdy nie publikuj jego treści na forum ani na czacie pomocy technicznej.
- Własne ustawienia wpisuj nad linią “stop editing”. Ostatnia linia poniżej wczytuje WordPressa, a ustawienie po tej linii przychodzi za późno.
- Pobrany WordPress zawiera
wp-config-sample.php. Właściwywp-config.phppowstaje podczas instalacji.- Nie zmieniaj
$table_prefixna działającej witrynie, edytując samą tę linię. WordPress uzna wtedy, że nie jest zainstalowany.
Gdzie znaleźć wp-config.php
Połącz się przez SFTP lub otwórz menedżer plików hostingu i przejdź do katalogu zawierającego wp-admin, wp-includes i wp-content. Dokumentacja WordPressa nazywa go głównym katalogiem plików WordPressa.
Jeśli pliku tam nie ma, zajrzyj jeden katalog wyżej. Program ładujący WordPressa najpierw sprawdza katalog instalacji, a potem katalog nadrzędny. Pomija katalog nadrzędny, jeśli ma on własny wp-settings.php, bo oznacza to, że działa tam inna instalacja WordPressa.
Jeśli pliku nie ma w żadnym z tych miejsc, WordPress kieruje odwiedzających na ekran konfiguracji. Ten ekran tworzy plik na podstawie wp-config-sample.php. Gdy nie może zapisywać w katalogu, pokazuje tekst do ręcznego wklejenia do nowego pliku.
Co robi każda domyślna sekcja
wp-config-sample.php to szablon, który ma te części w tej kolejności:
| Sekcja | Co zawiera | Czy można to zmienić? |
|---|---|---|
DB_NAME, DB_USER, DB_PASSWORD, DB_HOST | Dane logowania do bazy danych. Przykładowy plik podaje localhost jako hosta, a prawdziwe wartości może podać ci hosting. | Tak, gdy zmienią się dane bazy. Błędna wartość powoduje błąd nawiązywania połączenia z bazą danych. |
DB_CHARSET, DB_COLLATE | Sposób przechowywania tekstu w bazie danych. Domyślnie utf8mb4 i pusta wartość. | Komentarz do DB_COLLATE w przykładowym pliku mówi, by nie zmieniać tego w razie wątpliwości. |
Od AUTH_KEY do NONCE_SALT | Osiem kluczy i soli bezpieczeństwa używanych dla ciasteczek logowania. | Tak. Ich zmiana wylogowuje wszystkich użytkowników. |
$table_prefix | Tekst na początku nazwy każdej tabeli bazy danych, domyślnie wp_. | Tylko podczas instalacji, chyba że zmienisz też nazwy tabel i zaktualizujesz zapisane wpisy bazy danych, których nazwy używają tego prefiksu. |
WP_DEBUG | Tryb debugowania, w przykładowym pliku ustawiony na false. | Tak. Przewodnik o lokalizacji dziennika debugowania pokazuje, jak kierować błędy do pliku. |
| Komentarz “custom values” (własne wartości) | Puste miejsce na twoje ustawienia, kończące się linią “stop editing”. | Tak, tu trafiają twoje dodatki. |
ABSPATH i linia wp-settings.php | Ścieżka do WordPressa, a potem linia wczytująca resztę systemu. | Nie. Zostaw je bez zmian. |
Nowe klucze masz o jedno kliknięcie: usługa kluczy WordPress.org przy każdym wczytaniu podaje świeży zestaw. Zastąp nim wszystkie osiem linii.
Starsze pliki mogą nie mieć komentarza “custom values” i zawierać “Happy blogging” zamiast “Happy publishing”. Obie wersje działają, a zasada jest ta sama: ustawienia dodawaj nad tą linią.
Często zmieniane ustawienia
Każde z nich to jedna linia. Wszystkie pochodzą z dokumentacji wp-config.php, a wartości domyślne z pliku WordPressa 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' );
Skopiuj tylko potrzebne linie. Przy kilku z nich warto znać szczegóły:
- Pamięć: domyślnie WordPress używa 40M, a w multisite 64M, oraz 256M dla wp-admin, chyba że PHP pozwala już na więcej. Jeśli hosting nie pozwala zmienić limitu, WordPress używa limitu, który PHP już ma. Co zrobić w takiej sytuacji, opisuje przewodnik o wyczerpaniu pamięci.
- Wersje wpisów: domyślnie są włączone. Ustaw
false, aby je wyłączyć, albo liczbę, aby ograniczyć ich ilość. - Autozapis i kosz: wartości domyślne to 60 sekund i 30 dni. Ustawienie
EMPTY_TRASH_DAYSna0wyłącza kosz, a dokumentacja ostrzega, że WordPress nie poprosi wtedy o potwierdzenie, gdy ktoś kliknie “Delete Permanently” (Usuń trwale). - Edytor plików: przewodnik o zabezpieczaniu mówi, że to nie powstrzyma atakującego przed wgraniem złośliwych plików, choć może zatrzymać niektóre ataki.
DISALLOW_FILE_MODSidzie dalej i blokuje też instalowanie oraz aktualizowanie wtyczek i motywów. - HTTPS: gdy ustawienie „Adres WordPressa” zaczyna się już od
https, WordPress sam ustawiaFORCE_SSL_ADMINnatrue. Ta linia zmienia coś tylko wtedy, gdy adres nie zaczyna się odhttps. - Adresy witryny: nadpisują zapisane wartości, nie zmieniając tego, co jest w bazie danych. Podaj też część
https://.
Jedno ustawienie wymaga więcej planowania. define( 'DISABLE_WP_CRON', true ); sprawia, że odwiedziny stron nie uruchamiają zaplanowanych zadań, więc zanim je włączysz, ustaw na serwerze zadanie cron dla wp-cron.php. Inaczej zaplanowane wpisy i inne zadania czasowe nie zostaną wykonane.
Jak bezpiecznie edytować wp-config.php
- Najpierw pobierz kopię. Trzymaj ją na swoim komputerze. Kopia zostawiona na serwerze pod nazwą typu
wp-config.php.bakmoże być czytelna w przeglądarce, bo serwer nie traktuje jej już jak PHP. - Otwórz plik w zwykłym edytorze tekstu. Przewodnik WordPressa o edycji plików wymienia jako odpowiednie Notepad++, Sublime Text i Visual Studio Code, a odradza Dokumenty Google i Microsoft Word, bo edytory dokumentów zmieniają cudzysłowy i mogą dodawać kod, który psuje pliki.
- Znajdź linię “stop editing” i wpisz nowe linie bezpośrednio nad nią. Jeśli ustawienie jest już zdefiniowane wyżej, zmień tamtą linię.
- Zapisz i wgraj plik, a potem wczytaj witrynę w prywatnym oknie przeglądarki, razem z jedną stroną w wp-admin.
- Jeśli coś się zepsuje, przywróć kopię. To cofa edycję nawet wtedy, gdy wp-admin się nie wczytuje.
Przeniesienie pliku ponad katalog główny WWW
Przewodnik o zabezpieczaniu mówi, że wp-config.php można trzymać jeden katalog ponad instalacją WordPressa, a program ładujący obsługuje to bez dodatkowych ustawień. Przenieś plik i sprawdź, czy witryna nadal się wczytuje. Przeniesienie ma dwa ograniczenia:
- W katalogu nadrzędnym nie może być innej instalacji WordPressa. Program ładujący ignoruje katalog nadrzędny z własnym
wp-settings.php. - Jeden poziom wyżej jest prywatny tylko wtedy, gdy WordPress leży w katalogu głównym WWW. Jeśli WordPress działa w podkatalogu, na przykład
/blog/, jeden poziom wyżej zwykle nadal jest publiczny.
Ten sam przewodnik podaje, że według niektórych to przeniesienie daje minimalne korzyści dla bezpieczeństwa, a zrobione niedbale może wprowadzić poważne luki. Traktuj je więc jako opcjonalne. Dla Apache przewodnik podaje też ten blok na początek pliku .htaccess, który odrzuca bezpośrednie żądania do pliku:
<Files "wp-config.php">
Require all denied
</Files>
Tę regułę razem z innymi omawia nasz przewodnik o bezpieczeństwie .htaccess.
Uprawnienia pliku wp-config.php
Dokumentacja WordPressa podaje nieco inne liczby, zależnie od sytuacji:
- Przewodnik o zabezpieczaniu mówi, że odczytywać plik powinni tylko ty i serwer WWW, co według niego zwykle oznacza 400 lub 440.
- Przewodnik o uprawnieniach plików podaje 440 lub 400 na hostingu współdzielonym z suexec, aby inni użytkownicy serwera nie mogli go odczytać. Pokazuje też 600 jako zabezpieczony przykład.
- Dla zwykłych plików WordPressa ten przewodnik podaje 644 lub 640.
To, która liczba zadziała, zależy od użytkownika systemowego, na którym działa serwer WWW. Serwer WWW musi móc odczytać plik, więc jeśli po zmianie witryna przestanie się wczytywać, wróć do poprzedniej wartości i zapytaj hosting, która pasuje do jego konfiguracji.
Częste błędy
- Wklejenie ustawienia po linii
wp-settings.php. Ta linia wczytuje WordPressa i ustawia wartości domyślne. Stała PHP nie może się zmienić w trakcie działania skryptu, więc twoja linia nic nie zmienia. - Dwukrotne zdefiniowanie tego samego ustawienia. Pierwsza linia ustala wartość, a druga nie może jej zmienić. Podręcznik PHP podaje, że ponowne deklarowanie stałej jest przestarzałe od PHP 8.5, więc może też pojawić się komunikat. Zanim dodasz ustawienie, wyszukaj jego nazwę w pliku.
- Cudzysłów wokół true lub false.
'false'to niepusty ciąg znaków, a PHP traktuje go jak true. Piszfalsebez cudzysłowu. Rozmiary takie jak'256M'go wymagają. - Ozdobne cudzysłowy z edytora dokumentów lub strony internetowej. PHP wymaga prostych cudzysłowów, więc ozdobne powodują błąd, który zatrzymuje wczytywanie witryny.
- Wyświetlanie błędów debugowania na działającej witrynie.
WP_DEBUG_DISPLAYma domyślnie wartośćtrue, więc jeśli włączysz samoWP_DEBUG, odwiedzający zobaczą błędy na stronie. Przewodnik o lokalizacji dziennika debugowania pokazuje, jak kierować je do pliku. - Pozostawienie włączonego
WP_ALLOW_REPAIR. Dokumentacja mówi, aby włączać je tylko w razie potrzeby i wyłączyć po rozwiązaniu problemu.
Najczęściej zadawane pytania
Co to jest wp-config.php w WordPressie?
To plik konfiguracyjny, który WordPress wczytuje przy starcie. Zawiera dane logowania do bazy danych, klucze bezpieczeństwa i prefiks tabel, a także jest miejscem na ustawienia takie jak WP_DEBUG czy WP_MEMORY_LIMIT.
Gdzie znajduje się plik wp-config.php?
Zwykle w głównym katalogu instalacji WordPressa, czyli tam, gdzie są też wp-admin, wp-includes i wp-content. WordPress akceptuje go także jeden katalog wyżej, o ile w tym katalogu nie ma wp-settings.php.
W którym miejscu wp-config.php dodać kod? Nad linią That’s all, stop editing! Happy publishing. W starszych plikach jest tam Happy blogging. Ostatnia linia poniżej wczytuje WordPressa, więc ustawienie umieszczone po tej linii przychodzi za późno.
Czy edycja wp-config.php jest bezpieczna? Tak, jeśli masz kopię zapasową i używasz zwykłego edytora tekstu. Jedna literówka może zatrzymać całą witrynę razem z wp-admin, więc najpierw pobierz kopię. Jeśli po edycji witryna przestanie działać, przywróć tę kopię.
Co się stanie, gdy usunę wp-config.php? WordPress nie znajdzie już danych logowania do bazy i uruchomi proces konfiguracji z prośbą o utworzenie pliku konfiguracyjnego. Treści zostają w bazie danych, więc przywrócenie kopii lub odtworzenie pliku z tymi samymi danymi ponownie połączy witrynę.
Jakie uprawnienia powinien mieć wp-config.php? Przewodnik WordPressa o zabezpieczaniu mówi, że odczytywać go powinni tylko ty i serwer WWW, co zwykle oznacza 400 lub 440. Przewodnik o uprawnieniach plików pokazuje też 600. Serwer WWW nadal musi móc odczytać plik, więc jeśli witryna przestanie się wczytywać, zapytaj hosting.
Źródła
- WordPress Advanced Administration: wp-config.php, Hardening WordPress, File permissions, Editing files
- Kod źródłowy WordPressa: wp-config-sample.php, wp-load.php, default-constants.php, setup-config.php, cron.php
- Podręcznik PHP: Constants, Booleans
Zbuduj potrzebne ustawienia bez ręcznego wpisywania, razem ze świeżymi kluczami bezpieczeństwa, za pomocą darmowego generatora wp-config.php.
FAQ
Pytania
Co to jest wp-config.php w WordPressie?
To plik konfiguracyjny, który WordPress wczytuje przy starcie. Zawiera dane logowania do bazy danych, klucze bezpieczeństwa i prefiks tabel, a także jest miejscem na ustawienia takie jak WP_DEBUG czy WP_MEMORY_LIMIT.
Gdzie znajduje się plik wp-config.php?
Zwykle w głównym katalogu instalacji WordPressa, czyli tam, gdzie są też wp-admin, wp-includes i wp-content. WordPress akceptuje go także jeden katalog wyżej, o ile w tym katalogu nie ma wp-settings.php.
W którym miejscu wp-config.php dodać kod?
Nad linią That's all, stop editing! Happy publishing. W starszych plikach jest tam Happy blogging. Ostatnia linia poniżej wczytuje WordPressa, więc ustawienie umieszczone po tej linii przychodzi za późno.
Czy edycja wp-config.php jest bezpieczna?
Tak, jeśli masz kopię zapasową i używasz zwykłego edytora tekstu. Jedna literówka może zatrzymać całą witrynę razem z wp-admin, więc najpierw pobierz kopię. Jeśli po edycji witryna przestanie działać, przywróć tę kopię.
Co się stanie, gdy usunę wp-config.php?
WordPress nie znajdzie już danych logowania do bazy i uruchomi proces konfiguracji z prośbą o utworzenie pliku konfiguracyjnego. Treści zostają w bazie danych, więc przywrócenie kopii lub odtworzenie pliku z tymi samymi danymi ponownie połączy witrynę.
Jakie uprawnienia powinien mieć wp-config.php?
Przewodnik WordPressa o zabezpieczaniu mówi, że odczytywać go powinni tylko ty i serwer WWW, co zwykle oznacza 400 lub 440. Przewodnik o uprawnieniach plików pokazuje też 600. Serwer WWW nadal musi móc odczytać plik, więc jeśli witryna przestanie się wczytywać, zapytaj hosting.