Kompletny przewodnik po komendach w pliku wp-config.php WordPress

500sekund.pl 4 dni temu

Plik wp-config.php to centrum konfiguracyjne każdej instalacji WordPressa. To właśnie tutaj możesz precyzyjnie kontrolować zachowanie swojej witryny, od podstawowych ustawień bazy danych (bez tych ustawień prawdopodobnie zamiast swojej strony zobaczysz komunikat „Błąd łączenia się z bazą danych”) po zaawansowane opcje optymalizacji i bezpieczeństwa. W tym artykule znajdziesz kompleksowy przegląd wszystkich dostępnych komend i stałych.

Podstawowe ustawienia bazy danych

Zacznijmy od fundamentów – konfiguracji połączenia z bazą danych. Te komendy są generowane automatycznie podczas instalacji WordPressa:

define('DB_NAME', 'nazwa_bazy'); define('DB_USER', 'użytkownik'); define('DB_PASSWORD', 'hasło'); define('DB_HOST', 'localhost'); define('DB_CHARSET', 'utf8mb4'); define('DB_COLLATE', '');

Warto wiedzieć, iż DB_HOST może przyjmować różne wartości w zależności od konfiguracji serwera – czasami będzie to localhost, innym razem 127.0.0.1, a w niektórych przypadkach konkretny adres IP lub nazwa hosta z portem (np. localhost:3306). Może też przyjąć wartość mysql8 (w Home.pl) w momencie, kiedy korzystasz z MySQL w wersji 8.0.

Prefiks tabel:

$table_prefix = 'wp_';

Zmiana domyślnego prefiksu wp_ na coś unikalnego (np. xyz_ lub secure_) to prosty sposób na zwiększenie bezpieczeństwa – utrudnia atakującym przewidywanie nazw tabel w bazie danych. Prefiks podaje się podczas instalacji WordPressa.

Tryb debugowania i narzędzia dla programistów

Podczas rozwoju strony niezbędne są narzędzia debugowania. WordPress oferuje rozbudowany system wykrywania i logowania błędów:

// Podstawowe debugowanie define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', false); define('SCRIPT_DEBUG', true);
  • WP_DEBUG – główny przełącznik trybu debugowania
  • WP_DEBUG_LOG – zapisuje błędy do pliku wp-content/debug.log
  • WP_DEBUG_DISPLAY – kontroluje wyświetlanie błędów bezpośrednio na stronie (ważne – ustaw na false na działającej stronie żeby zwiększyć bezpieczeństwo witryny)
  • SCRIPT_DEBUG – wymusza używanie nieskompresowanych wersji plików CSS i JS, co ułatwia debugowanie

Zaawansowane debugowanie:

define('SAVEQUERIES', true); define('DIEONDBERROR', true);

SAVEQUERIES zapisuje wszystkie zapytania SQL wraz z czasem wykonania w tablicy $wpdb->queries. To nieocenione narzędzie do optymalizacji, ale znacząco obciąża system – używaj tylko podczas rozwoju!

DIEONDBERROR powoduje, iż WordPress natychmiast przestaje działać i wyświetla błąd, gdy tylko napotka problem z bazą danych. To nieocenione narzędzie do szybkiego wykrywania usterek w kodzie, ale jest niepożądane dla zwykłego użytkownika – używaj tylko podczas rozwoju!

Klucze bezpieczeństwa i salt

WordPress używa unikalnych kluczy i salt do szyfrowania informacji przechowywanych w cookies użytkowników:

define('AUTH_KEY', 'tutaj-losowy-ciąg-znaków'); define('SECURE_AUTH_KEY', 'tutaj-losowy-ciąg-znaków'); define('LOGGED_IN_KEY', 'tutaj-losowy-ciąg-znaków'); define('NONCE_KEY', 'tutaj-losowy-ciąg-znaków'); define('AUTH_SALT', 'tutaj-losowy-ciąg-znaków'); define('SECURE_AUTH_SALT', 'tutaj-losowy-ciąg-znaków'); define('LOGGED_IN_SALT', 'tutaj-losowy-ciąg-znaków'); define('NONCE_SALT', 'tutaj-losowy-ciąg-znaków');

Bezpieczeństwo – zaawansowane ustawienia

WordPress oferuje szereg opcji zwiększających bezpieczeństwo instalacji:

// Wyłączenie edytora plików w panelu administracyjnym define('DISALLOW_FILE_EDIT', true); // Wyłączenie instalacji/aktualizacji wtyczek i motywów - nie rekomendowane, chyba iż wykonujesz samodzielnie aktualizacje define('DISALLOW_FILE_MODS', true); // Wymuszenie SSL dla panelu administracyjnego define('FORCE_SSL_ADMIN', true); // Wymuszenie SSL dla całej witryny define('FORCE_SSL_LOGIN', true);

DISALLOW_FILE_EDIT to jedna z najważniejszych opcji bezpieczeństwa – wyłącza edytor plików motywów i wtyczek w kokpicie, co uniemożliwia potencjalnym napastnikom modyfikację kodu choćby po przejęciu konta administratora.

Kontrola aktualizacji:

// Całkowite wyłączenie automatycznych aktualizacji define('AUTOMATIC_UPDATER_DISABLED', true); // Precyzyjna kontrola aktualizacji rdzenia define('WP_AUTO_UPDATE_CORE', 'minor'); // 'minor', 'major', true, false

Opcje dla WP_AUTO_UPDATE_CORE:

  • false – brak automatycznych aktualizacji
  • true – wszystkie aktualizacje automatyczne
  • 'minor' – tylko aktualizacje bezpieczeństwa i drobne poprawki (zalecane)
  • 'major' – również główne wersje

Optymalizacja wydajności

WordPress posiada wbudowane mechanizmy poprawiające wydajność:

// Włączenie systemu cache define('WP_CACHE', true); // Kontrola kompresji i konkatenacji define('CONCATENATE_SCRIPTS', false); define('COMPRESS_SCRIPTS', false); define('COMPRESS_CSS', false); define('ENFORCE_GZIP', true);

WP_CACHE włącza obsługę cache’owania i jest wymagane przez większość wtyczek cachujących. ENFORCE_GZIP wymusza kompresję GZIP dla odpowiedzi serwera, co znacząco redukuje rozmiar przesyłanych danych.

CONCATENATE_SCRIPTS decyduje, czy skrypty (pliki .js) powinny być łączone w jeden większy plik. Ustawienie na false oznacza, iż skrypty są ładowane osobno, co może pomóc w debugowaniu.

COMPRESS_SCRIPTS określa, czy skrypty (pliki .js) mają być kompresowane (zmniejszane). Ustawienie na false wyłącza to, co również ułatwia debugowanie.

COMPRESS_CSS określa, czy pliki stylów (pliki .css) mają być kompresowane (zmniejszane). Ustawienie na false wyłącza tę kompresję, ułatwiając sprawdzanie stylów.

ENFORCE_GZIP wymusza kompresję GZIP dla odpowiedzi serwera, co znacząco redukuje rozmiar przesyłanych danych.

Zarządzanie pamięcią

Jeśli twoja strona wymaga więcej zasobów lub wyświetlają się błędy przekroczenia limitu pamięci:

// Limit pamięci dla frontendu define('WP_MEMORY_LIMIT', '256M'); // Limit pamięci dla panelu administracyjnego define('WP_MAX_MEMORY_LIMIT', '512M');

Pamiętaj, iż te wartości muszą być zgodne z limitami ustawionymi w PHP (php.ini). jeżeli ustawisz zbyt wysoką wartość, może ona być zignorowana przez serwer.

Zarządzanie rewizjami postów

WordPress domyślnie zapisuje każdą wersję edytowanego posta. Może to prowadzić do rozrostu bazy danych:

// Ograniczenie liczby rewizji - kopii stron/wpisów w historii define('WP_POST_REVISIONS', 3); // Całkowite wyłączenie rewizji define('WP_POST_REVISIONS', false); // Interwał automatycznego zapisu (w sekundach) define('AUTOSAVE_INTERVAL', 160);

Zarządzanie koszem

// Czas przechowywania elementów w koszu (w dniach) define('EMPTY_TRASH_DAYS', 7); // Natychmiastowe usuwanie bez kosza define('EMPTY_TRASH_DAYS', 0); // Włączenie kosza dla mediów define('MEDIA_TRASH', true);

Domyślnie WordPress przechowuje usunięte elementy przez 30 dni. Zmniejszenie tego czasu pomaga utrzymać bazę danych w czystości.

Niestandardowe ścieżki i URL-e

Możesz dostosować lokalizacje katalogów i URL-e WordPress:

// Własne URL-e instalacji define('WP_HOME', 'https://example.com'); define('WP_SITEURL', 'https://example.com'); // Niestandardowa lokalizacja katalogu wp-content define('WP_CONTENT_DIR', dirname(__FILE__) . '/content'); define('WP_CONTENT_URL', 'https://example.com/content'); // Niestandardowa lokalizacja wtyczek define('WP_PLUGIN_DIR', dirname(__FILE__) . '/content/plugins'); define('WP_PLUGIN_URL', 'https://example.com/content/plugins'); // Niestandardowa lokalizacja plików tłumaczeń define('WP_LANG_DIR', dirname(__FILE__) . '/content/languages'); // Niestandardowy katalog dla uploadów define('UPLOADS', 'wp-content/uploads');

Te ustawienia są szczególnie przydatne podczas migracji, w niestandardowych konfiguracjach serwerów, lub gdy chcesz ukryć typową strukturę WordPressa.

Zarządzanie Cron (zaplanowane zadania)

WordPress używa wirtualnego systemu cron, który uruchamia się podczas odwiedzin strony:

// Wyłączenie wbudowanego WP-Cron define('DISABLE_WP_CRON', true); // Alternatywny sposób uruchamiania cron define('ALTERNATE_WP_CRON', true); // Timeout dla blokady cron (w sekundach) define('WP_CRON_LOCK_TIMEOUT', 60);

Po wyłączeniu WP_CRON powinieneś skonfigurować prawdziwy cron na serwerze.

Ustawienia sesji i cookies

Precyzyjna kontrola nad cookies użytkowników:

define('COOKIE_DOMAIN', '.example.com'); define('COOKIEPATH', '/'); define('SITECOOKIEPATH', '/'); define('ADMIN_COOKIE_PATH', '/wp-admin'); define('PLUGINS_COOKIE_PATH', '/wp-content/plugins'); define('COOKIEHASH', md5('example.com'));

Te ustawienia są najważniejsze w instalacjach wielodomenowych lub gdy WordPress znajduje się w podkatalogu.

Multisite (sieć witryn)

Jeśli prowadzisz sieć stron WordPress:

// Włączenie możliwości tworzenia sieci define('WP_ALLOW_MULTISITE', true); // Aktywacja sieci (dodawane po konfiguracji) define('MULTISITE', true); define('SUBDOMAIN_INSTALL', false); // false = podkatalogi, true = subdomeny define('DOMAIN_CURRENT_SITE', 'example.com'); define('PATH_CURRENT_SITE', '/'); define('SITE_ID_CURRENT_SITE', 1); define('BLOG_ID_CURRENT_SITE', 1); // Wyłączenie aktualizacji globalnych tabel define('DO_NOT_UPGRADE_GLOBAL_TABLES', true);

Konfiguracja FTP/SSH dla aktualizacji

Określ sposób łączenia się z serwerem podczas instalacji wtyczek i motywów:

// Metoda połączenia: 'direct', 'ssh2', 'ftpext', 'ftpsockets' define('FS_METHOD', 'direct'); // Ustawienia FTP define('FTP_HOST', 'ftp.example.com:21'); define('FTP_USER', 'username'); define('FTP_PASS', 'password'); define('FTP_SSL', true); // Ustawienia SSH define('FTP_PUBKEY', '/home/username/.ssh/id_rsa.pub'); define('FTP_PRIKEY', '/home/username/.ssh/id_rsa'); // Timeouty dla operacji na plikach define('FS_TIMEOUT', 30); define('FS_CONNECT_TIMEOUT', 30); define('FS_CHMOD_DIR', (0755 & ~ umask())); define('FS_CHMOD_FILE', (0644 & ~ umask()));

Metoda direct jest najszybsza, ale wymaga odpowiednich uprawnień na serwerze.

Proxy i Firewall

Jeśli twoja strona działa za proxy lub firewallem:

define('WP_PROXY_HOST', '192.168.1.100'); define('WP_PROXY_PORT', '8080'); define('WP_PROXY_USERNAME', 'username'); define('WP_PROXY_PASSWORD', 'password'); define('WP_PROXY_BYPASS_HOSTS', 'localhost, www.example.com');

Kontrola HTTP API

Zarządzaj zewnętrznymi połączeniami HTTP WordPress:

// Blokowanie wszystkich zewnętrznych żądań HTTP define('WP_HTTP_BLOCK_EXTERNAL', true); // Lista dozwolonych hostów (whitelist) define('WP_ACCESSIBLE_HOSTS', 'api.wordpress.org,*.github.com,example.com'); // Timeout dla żądań HTTP (w sekundach) define('WP_HTTP_TIMEOUT', 10);

To znacząco zwiększa bezpieczeństwo, blokując potencjalnie złośliwe połączenia z wtyczek lub motywów.

Naprawa i konserwacja bazy danych

// Włączenie trybu naprawy bazy danych define('WP_ALLOW_REPAIR', true);

Po włączeniu odwiedź: https://twojastrona.pl/wp-admin/maint/repair.php

WAŻNE: Wyłącz tę opcję zaraz po zakończeniu naprawy! Strona naprawy jest dostępna publicznie bez logowania.

Ustawienia językowe

// Język instalacji define('WPLANG', 'pl_PL'); // Automatyczne aktualizacje tłumaczeń define('WP_AUTO_UPDATE_CORE', true);

Wyłączanie funkcji i powiadomień

// Wyłączenie irytujących powiadomień o aktualizacjach define('DISABLE_NAG_NOTICES', true); // Domyślny motyw (gdy aktywny jest niedostępny) define('WP_DEFAULT_THEME', 'twentytwentyfour'); // Wyłączenie obsługi błędów krytycznych (recovery mode) define('WP_DISABLE_FATAL_ERROR_HANDLER', true); // Wyłączenie heartbeat API (zmniejsza obciążenie serwera) define('WP_HEARTBEAT_DISABLE', true);

Przesyłanie plików

// Dozwolenie przesyłania niebezpiecznych typów plików define('ALLOW_UNFILTERED_UPLOADS', true);

UWAGA: To poważne zagrożenie bezpieczeństwa! Używaj tylko gdy absolutnie konieczne i rozumiesz ryzyko.

Edytor obrazów

// Nadpisywanie obrazów podczas edycji zamiast tworzenia nowych define('IMAGE_EDIT_OVERWRITE', true);

E-mail

// Minimalny interwał między wysyłaniem maili (w sekundach) define('WP_MAIL_INTERVAL', 300); // Adres "From" dla maili WordPress define('WP_MAIL_FROM', 'wordpress@example.com'); define('WP_MAIL_FROM_NAME', 'WordPress');

Zaawansowane ustawienia dla doświadczonych użytkowników

// Niestandardowy user i grupa dla plików define('FS_USER', 'www-data'); define('FS_GROUP', 'www-data'); // Wyłączenie sprawdzania wersji PHP define('WP_PHP_VERSION_CHECK_SKIP', true); // Zmiana częstotliwości sprawdzania aktualizacji (w sekundach) define('WP_CHECK_UPDATE_INTERVAL', 43200); // 12 godzin // Własny plik błędów define('ERRORLOGFILE', '/var/log/wordpress/error.log');

Wpisy i media

// Maksymalny rozmiar posta (w bajtach) define('WP_POST_MAX_REVISIONS', 5); // Filtr przesyłanych mediów define('MEDIA_FILTER_LIBRARY', true);

Środowiska (Environment)

WordPress rozpoznaje różne środowiska pracy:

define('WP_ENVIRONMENT_TYPE', 'development'); // 'local', 'development', 'staging', 'production'

Inne wtyczki i systemy mogą automatycznie dostosowywać swoje zachowanie na podstawie tej wartości.

Bezpieczeństwo – dodatkowe opcje

// Maksymalna liczba prób logowania define('WP_MAX_LOGIN_ATTEMPTS', 3); // Czas blokady po nieudanych próbach (w sekundach) define('WP_LOGIN_LOCKOUT_TIME', 900); // 15 minut // Wyłączenie XML-RPC (często cel ataków) add_filter('xmlrpc_enabled', '__return_false');

Compatibility i Legacy

// Włączenie trybu kompatybilności dla starszych wtyczek define('WP_COMPATIBILITY_MODE', true); // Ustawienia dla MySQL define('MYSQL_CLIENT_FLAGS', 0);

Praktyczne wskazówki dotyczące użytkowania

Kolejność wpisów w wp-config.php

Zalecana kolejność sekcji w pliku:

  1. Ustawienia bazy danych
  2. Klucze bezpieczeństwa i sole
  3. Prefiks tabeli
  4. Ustawienia środowiska (development/production)
  5. Bezpieczeństwo
  6. Wydajność
  7. Debug (tylko dla środowiska deweloperskiego)
  8. Pozostałe ustawienia specyficzne dla projektu

Różne konfiguracje dla różnych środowisk

Możesz użyć warunków do różnych ustawień na lokalnym serwerze i produkcji:

if ($_SERVER['HTTP_HOST'] == 'localhost') { // Ustawienia dla lokalnego środowiska define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', true); } else { // Ustawienia dla produkcji define('WP_DEBUG', false); define('DISALLOW_FILE_EDIT', true); define('FORCE_SSL_ADMIN', true); }

Bezpieczeństwo pliku wp-config.php

Plik wp-config.php zawiera wrażliwe dane i powinien być chroniony:

.htaccess (Apache):

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

nginx.conf (Nginx):

location ~* wp-config.php { deny all; }

Możesz również przenieść wp-config.php o jeden poziom wyżej niż katalog główny WordPress – system automatycznie go znajdzie.

Pod żadnym pozorem nie udostępniaj swojego pliku wp-config.php w sieci, nie kopiuj zawartości i nie wklejaj w prywatnych rozmowach jeżeli nie wiesz, co kopiujesz.

Najczęstsze błędy i jak ich unikać

  1. Białe znaki przed <?php lub po ?> – mogą powodować problemy z nagłówkami HTTP
  2. Brak kopii zapasowej – zawsze twórz backup przed modyfikacją
  3. Testowanie na produkcji – niebezpieczne ustawienia debugowania powinny być używane tylko lokalnie
  4. Zbyt wysokie limity pamięci – mogą być ignorowane przez serwer lub powodować problemy
  5. Pozostawienie WP_ALLOW_REPAIR – otwiera publiczny dostęp do naprawy bazy

Podsumowanie

Plik wp-config.php to potężne narzędzie konfiguracyjne oferujące niemal pełną kontrolę nad instalacją WordPressa. adekwatna konfiguracja może znacząco:

  • Poprawić bezpieczeństwo witryny
  • Zwiększyć wydajność i szybkość działania
  • Ułatwić debugowanie i rozwój
  • Dostosować WordPress do specyficznych wymagań

Kluczowe zasady:

  • Zawsze twórz kopię zapasową przed wprowadzeniem zmian
  • Testuj nowe ustawienia najpierw w środowisku deweloperskim
  • Dokumentuj wprowadzone zmiany komentarzami w pliku
  • Zabezpieczaj plik wp-config.php odpowiednimi uprawnieniami (chmod 600 lub 640)
  • Nie umieszczaj wp-config.php w repozytorium Git – użyj .gitignore

Wiele z tych stałych jest przeznaczonych dla zaawansowanych użytkowników i programistów. jeżeli nie jesteś pewien działania konkretnej opcji, najlepiej pozostaw ją w domyślnym stanie lub sprawdź dokumentację WordPressa na https://developer.wordpress.org/ lub skontaktuj się z administratorem serwera.

Pamiętaj również, iż hosting może mieć własne ograniczenia – niektóre ustawienia mogą wymagać współpracy z dostawcą hostingu lub odpowiednich uprawnień na serwerze.

Idź do oryginalnego materiału