Błąd 500 WordPress - diagnoza i naprawa
Internal Server Error 500 to jeden z najbardziej frustrujących błędów WordPress. Strona nie działa, brak szczegółów. Przyczyny mogą być różne - od zepsutej wtyczki po błąd w .htaccess. Pokażę jak zdiagnozować i naprawić.
Krótka odpowiedź
Najczęstsze przyczyny
1. Zepsuta wtyczka:
- Najczęstsza przyczyna
- Błąd PHP w kodzie wtyczki
- Konflikt między wtyczkami
- Po aktualizacji
2. Błąd w .htaccess:
- Nieprawidłowe reguły
- Uszkodzony plik
- Konflikt reguł
3. Limit pamięci PHP:
- Memory exhausted
- Zbyt niski limit (32MB, 64MB)
4. Błąd w wp-config.php:
- Literówka
- Brak średnika
- Nieprawidłowe dane bazy
5. Zepsuta instalacja WordPress:
- Uszkodzone pliki core
- Niepełna aktualizacja
Diagnoza - włącz debugowanie
WP_DEBUG:
Przez FTP edytuj wp-config.php:
```php
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
```
Sprawdź logi:
- wp-content/debug.log
- Znajdź: Fatal error, line X
- To wskazuje na winowajcę
Error log serwera:
- cPanel → Error Log
- /var/log/apache2/error.log
- /var/log/php/error.log
Jeśli brak dostępu do plików:
- cPanel File Manager
- phpMyAdmin (dla wp_options)
Naprawa - krok po kroku
Krok 1: Wyłącz wtyczki (FTP):
1. wp-content/plugins/ → zmień nazwę na plugins_old
2. Odśwież stronę
3. Jeśli działa = winowajca to wtyczka
4. Przywróć plugins, wyłączaj pojedynczo
Krok 2: Sprawdź/przywróć .htaccess:
1. .htaccess → zmień nazwę na .htaccess_old
2. Odśwież stronę
3. Jeśli działa → odtwórz domyślny:
```apache
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
```
Krok 3: Zwiększ limit pamięci:
wp-config.php:
```php
define('WP_MEMORY_LIMIT', '256M');
```
Krok 4: Zmień motyw:
Przez phpMyAdmin:
```sql
UPDATE wp_options SET option_value = 'flavor' WHERE option_name = 'stylesheet';
UPDATE wp_options SET option_value = 'flavor' WHERE option_name = 'template';
```
Zaawansowana diagnostyka
PHP version:
- Niezgodność PHP 8.x z starymi wtyczkami
- Obniż PHP w panelu hostingu
- Lub zaktualizuj wtyczki
Uszkodzone pliki core:
```bash
wp core verify-checksums
wp core download --force
```
Baza danych:
- wp_options z dużą autoload = problem
- Napraw: wp-admin/maint/repair.php
Timeout:
- php.ini: max_execution_time = 300
- .htaccess: php_value max_execution_time 300
Plik debug:
- Jeśli debug.log nie powstaje
- Sprawdź uprawnienia wp-content (755)
- touch wp-content/debug.log
- chmod 666 debug.log