aplicații Web din 2004.
500 Eroare Internă A Serverului
…și cum să o rezolvi.
răspunsul scurt: aceasta este de obicei o eroare de permisiuni pe CGIscript, care este ușor de remediat. Accesați clientul FTP sau site-ul dvs. filemanager și evidențiați sau faceți clic dreapta pe scriptul CGI. Apoi alegețiproprietăți sau permisiuni sau “Chmod” și setați-l la World-executable: that ‘ s0755 sau a+rx sau-rwxr-xr-x. nu utilizați 0777 (a+rwx sau-rwxrwxrwx). Și directorul cgi-bin în sine ar trebui să fie, de asemenea, 0755, nu 0777.
răspunsul lung:când rulați un script Perl CGI precum FileChucker sauuserbase, este posibil să vedeți mesajul “Eroare internă a serverului”în browserul dvs. Mesajul va spune, de obicei, cevacum ar fi “verificați jurnalul de erori al serverului pentru mai multe informații.”Ar trebui să faceți asta-mesajul tipărit în Jurnalul de erori vă va spune adesea exact care este problema. Jurnalul de erori Apache, de exemplu, esteadesea localizat la/var/log/apache /error_log sau/var/log/apache2 / error_log (sauuneori “eroare.jurnal”).
dacă nu aveți acces la Jurnalul de erori, cel mai simplu lucru de făcut este să faceți o copie de rezervă a scriptului, apoi deschideți originalul și ștergeți toate conținuturile sale și adăugați doar aceste 3 linii în fișier:
#!/usr/bin/perlprint "Content-type: text/plain\n\n";print "testing...\n";
(Notă: Dacă serverul este un sistem Windows, înlocuiți prima linie de mai suscu#!perl sau #!c:\path\to\perl.exe.)
acum încercați să accesați din nou pagina din browserul dvs. Dacă funcționează (vedeți ” testare…”ca ieșire) atunci știți că serverul dvs. este cel puțin configuratîn mod corespunzător pentru rularea scripturilor Perl CGI. Dacă nu funcționează, atunci asta poateînseamnă că problema este în configurația serverului, mai degrabă decât cu CGIscript. (De exemplu, sunteți sigur că aveți de fapt Perl instalat? Practic toate serverele UNIX/Linux/OS X o fac, dar serverele Windows trebuie de obiceiau instalat manual, dintr-un pachet gratuit precum ActivePerl.)
presupunând că serverul dvs. este configurat corect pentru rularea scripturilor CGI, problema dvs. poate fi una dintre aceste cauze comune pentru eroarea internă a serverului:
probleme în afara scriptului:
- permisiuni Director: directorul cgi-bin ar trebui să fie chmodded ca 0755,nu 0777. În mod similar, dacă script-ul este la …/ cgi-bin / foo / bar.CGI, directorul foo nu trebuie să poată fi scris în lume (0777). Acest lucru se datorează faptului că multe servere vor refuza să execute scripturi CGI în World-writabledirectories, ca măsură de precauție de securitate.
- permisiuni de fișiere: scriptul CGI în sine trebuie să fie,de asemenea, 0755 și nu 0777, din aceleași motive.
- moduri de Transfer: dacă utilizați FTP pentru a transfera scriptul CGI pe serverul dvs., atunci clientul FTP este probabil setat la modul de transfer automat; thatis, se va încerca să dau seama dacă să utilizeze modul binar sau ASCII fărăîntrebându-vă. Dar, în funcție de faptul dacă script-ul CGI a venit de la un sistem Windows sau UNIX, și dacă se merge la un Windows sau UNIXsystem, poate fi necesar să setați manual clientul FTP pentru a utiliza fie modul binar ASCIIor înainte de a transfera script-ul CGI. Încearcă una și apoi cealaltă.
- terminații de linie: cauza problemei modului de transfer este de fapt o altă problemă în sine: diferite tipuri de sisteme de operare (și anume, Windowsvs. UNIX / Linux / totul) utilizați coduri de caractere diferite pentru a reprezentalinia-terminații. Dacă serverul dvs. este un server UNIX, dar editați scriptul CGI pe un computer Windows cu un editor de text care nu utilizează terminații de linie în stil UNIX, va cauza probleme. Aplicațiicum ar fi GoLive și Dreamweaver uneori greșesc acest lucru. Chiar și editorii încorporați nu pot fi de acord: WordPad (nu Word) pare să-l corecteze în timp ce notepad îl încurcă. Așadar, încercați să deschideți & salvând scriptul CGIÎNTR-un alt editor de text și încărcându-l din nou pe server.
probleme în script:
- linia shebang: prima linie a unui script CGI trebuie să conținăcalea către binarul Perl de pe server. Pe majoritatea serverelor Unix thisis doar #!/ usr / bin / perl sau uneori #!/ usr / local / bin / perl și putețialergați întotdeauna comanda” care perl ” pentru a afla sigur. Pe Windowsservers, puteți obține, uneori, departe cu doar folosind #!perl dar mayneed pentru a specifica calea completă ca #!c:\path\to\perl.exe.
- erori de script reale: este întotdeauna posibil să existe pur și simplu o eroareîn codul Perl în sine. Dacă aveți probleme cu un script ați achiziționat de la industrii Codificabile, acest lucru este puțin probabil, deoarece mulțialte persoane au cumpărat același script exact și îl rulează justfine.
probleme conexe
- o altă problemă comună cu script-uri CGI este sfârșitul prematura de script anteterror.
Leave a Reply