Internal Server Error 500, kako nastaje i analiza?

  1. Početna
  2. cPanel
  3. Kako
  4. Kako
  5. Internal Server Error 500, kako nastaje i analiza?

Internal Server Error nastaje iz više razloga. Greška u kodu, problem .htaccess

Greška koja se pojavljuje na wordpress od najnovije verzije su:

Ovo veb mesto doživljava tehničke poteškoće.
This web site experiencing technical difficulties

Rešavanje se svodi na sistem eliminacije.

Ukoliko je sajt neki drugi a ne wordpress (pošto se uputstvo za wordpress nalazi u nastavku ovog članka) aktivirajte debug u php pomoću sledećeg koda:

error_reporting(E_ALL);
ini_set('display_errors', 1);

Kod ovaj unosite u prvoj liniji odmah ispod <?php u svakom fajlu kako bi ste detektovali koji fajl i koji red u tom fajlu je problem.


Pre svega se ulogujte cPanel – File Manager i potražite u public_html “error_log” fajl (ili cPanel > File Manager i LOGS folder unutar njega videcete fajl “vasdomen.error_log”). Pogledajte šta piše unutra koji fajl pravi problem i gde se nalazi greška u kom redu koda. Tu bi trebao da stoji i datum kada je greška nastala ukoliko je skorašnji datum onda je moguće da ta greška izaziva error 500, ukoliko nije onda tražite dalje.

Proverite .htaccess fajl. Moguće je da nije sve ispisano kako valja ili da je nastala negde greška. Najbolje je da vratite htaccess na početak. Kako ne bi brisali linije koda iz fajla najbolje bi bilo da postavite tarabu na početku linije i time ćete je “obrisati” odnosno ta linija više neće biti bitna.

WordPress pronalaženje greške

WordPress Debug link

Putem ovog linka naći ćete uputstvo koje je potrebno da aktivirate opciju koja će vam pomoći da prikaže gde je greška.

U File Manager u cPanelu u vašem root folderu imate wordpress fajl koji se zove wp-config.php, kliknete desni klik pa edit kada vam se otvori nađite liniju u kojoj piše:

define( 'WP_DEBUG', false );

Umesto te linije treba da ubacite ovo:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', true );
@ini_set( 'display_errors', 0 );

Jednostavnim copy-paste i sačuvajte u desni gornji ugao.

Zatim pogledajte error log fajl u cPanel > File Manager pa LOGS folder i unutar njega biće fajl vasdomen.error_log. 

Ukoliko vidite nešto tipa:

[05-Feb-2019 13:38:17 UTC] PHP Fatal error:  Allowed memory size of 41943040 bytes exhausted (tried to allocate 65536 bytes) in /home/username/public_html/wp-content/plugins/everest-forms/includes/class-evf-log-levels.php on line 14
[05-Feb-2019 13:39:33 UTC] PHP Fatal error:  Allowed memory size of 41943040 bytes exhausted (tried to allocate 32768 bytes) in /home/username/public_html/wp-content/plugins/jetpack/locales.php on line 236

To znači da je taj plugin napravio problem. U ovom slučaju dva everest-forms i jetpack.

  • ali samo ako stoji PHP FATAL ERROR ukoliko stoji worning onda to nije uzrok

Tu postoje dva načina da se reše u ovom slučaju a to je da se obriše sporan plugin i zamene drugim koji ne pravi problem (u ovom slučaju može da se poremeti sajt zavisno od plugina i koja je njegova namena).

A u ovom konkretnom slučaju koji vidite to se rešava iz cPanel-a opcija PHP INI EDITOR gde povećate memory_limit. Tu možete da stavite duplo od onoga što piše ili 256MB recimo kako sigurno ne bi ste imali problema.

Ovaj primer sam naveo iz razloga zato što je to najubičajena greška koju možete uz dva klika lako da rešite.

Moguće je problem rešiti i promenom PHP verzije iz MultiPHP Manager iz cPanel-a jer neki dodaci rade na drugim verzijama php-a. Ukoliko nešto ne radi na novijim verzijama kao što je 7.1 ili više onda svakako nije bezbedno da koristite taj dodatak.

Ukoliko error log fajl ne prikaže ništa onda vam je greška u fajlu .htaccess to možete da rešite prostom izmenom .htaccess fajla vraćanje na podrazumevani a sadržaj koji treba da se nalazi samo u tom fajlu da bi wordpress radio je sledeći:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Djordje
Share