Eroarea 500 „Eroare internă de server” apare atunci când scriptul pe care l-ați plasat pe server nu poate fi rulat, când există erori în script sau când o instrucțiune incorectă este plasată în fișierul .htaccess. Această listă de motive pentru eroarea 500 nu este exhaustivă; există multe alte motive pentru care poate apărea eroarea 500. Cu toate acestea, cele trei cazuri menționate sunt cele mai frecvente.

Să luăm mai întâi în considerare cazul în care ați plasat o instrucțiune incorectă în fișierul .htaccess. Dacă ați făcut o greșeală în ortografierea numelui directivei necesare sau a parametrilor acesteia, veți găsi ceva de genul următoarei erori în fișierul error.log:

[Wed Apr 14 17:01:38 2004] [alert] [client 217.16.16.16]

/home/uXXXXX/aaa.ru/www/.htaccess:Invalid command 'DrectoryIndex',

perhaps mis-spelled or defined bya module not included in the server

configuration

 

Serverul web vă va spune ce directivă specifică a considerat-o eronată și va trebui corectată. În acest caz, serverul web a raportat că nu cunoaște directiva DrectoryIndex. Și într-adevăr, nu există nicio directivă DrectoryIndex, există DirectoryIndex. Există o greșeală de tipar.

Dacă apare eroarea 500 la accesarea unui script Perl aflat în directorul cgi-bin, trebuie să verificați drepturile de acces la acest script. Permisiunile ar trebui să fie 755 (rwxrx-rx). Dacă nu este cazul, trebuie să modificați drepturile la 755 folosind comanda chmod 755 script.pl în shell-ul Unix sau să utilizați FTP pentru aceasta. Trebuie remarcat separat faptul că permisiunile pentru scripturi trebuie setate strict la 755.

Vă rugăm să verificați dacă ați folosit modul corect de transfer de fișiere FTP când ați încărcat scriptul pe serverul nostru. Toate scripturile, precum și orice alte fișiere text, trebuie să fie transferate prin FTP în modul text (ASCII). Dacă a fost folosit modul de transfer de fișiere binar, probabil că scripturile nu vor funcționa.

Dacă, după verificarea corectitudinii drepturilor setate la fișierul script, eroarea nu dispare, trebuie să examinați cele mai recente intrări din fișierul error.log – serverul web plasează toate mesajele de eroare în el. Deci vei găsi o linie ca

[Fri Apr  9 15:05:31 2004] [error][client 217.16.16.16] Premature end of

script headers: /home/uXXXX/aaa.ru/cgi-bin/script.pl

 

Primul lucru pe care trebuie să-l faceți când primiți o astfel de eroare este să verificați dacă scriptul emite corect anteturile HTTP. Fiecare script trebuie să imprime mai întâi o linie care indică tipul de conținut corespunzător și numai apoi direct ceea ce va vedea utilizatorul (de exemplu, codul HTML). Un exemplu de linie pentru afișarea titlului unui document HTML obișnuit:

print "Content-type: text/html; charset=windows-1251\n\n";

 

Dacă, după emiterea antetelor corecte, eroarea 500 nu dispare, trebuie să verificați funcționarea corectă a scriptului în ansamblu. Pentru a face acest lucru, trebuie să obțineți acces la shell-ul Unix și apoi să rulați comanda de verificare a sintaxei:

> perl -cw script.pl

script.pl syntax OK

 

Dacă scriptul este scris cu erori, acestea trebuie corectate utilizând diagnosticele adecvate, iar sintaxa scriptului trebuie verificată din nou.