Web Apps od 2004 roku.

500 Wewnętrzny Błąd Serwera

…i jak to naprawić.

krótka odpowiedź: zwykle jest to błąd uprawnień w CGIscript, który można łatwo naprawić. Przejdź do klienta FTP lub menedżera plików witryny i zaznacz lub kliknij prawym przyciskiem myszy skrypt CGI. Następnie wybieramproperties, Permissions lub “Chmod” i ustawiam go na World-executable: that ‘ s0755, or a + RX, or-rwxr-xr-x. nie używaj 0777 (a + rwx or-rwxrwxrwx). A twój katalog cgi-bin również powinien mieć wartość 0755, a nie 0777.

długa odpowiedź:podczas uruchamiania skryptu Perl CGI, takiego jak FileChucker orUserBase, może pojawić się komunikat “Internal Server Error”w przeglądarce. Komunikat zwykle będzie również mówił coś w stylu ” proszę sprawdzić dziennik błędów serwera, aby uzyskać więcej informacji.”Powinieneś to zrobić – komunikat wydrukowany w dzienniku błędów często powie Ci dokładnie, na czym polega problem. Dziennik błędów Apache, na przykład, znajduje się w /var/log/apache/error_log lub /var/log/apache2/error_log (lub czasami “błąd.log”).

jeśli nie masz dostępu do dziennika błędów, następną najprostszą rzeczą do zrobienia jest zrobienie kopii zapasowej skryptu, następnie otwórz Oryginał i usuń wszystkie jego treści, a następnie dodaj tylko te 3 linie do pliku:

#!/usr/bin/perlprint "Content-type: text/plain\n\n";print "testing...\n";

(Uwaga: Jeśli serwer jest systemem Windows, zastąp pierwszą linię powyżej albo #!perl lub #!c:\path\to\perl.exe.

teraz spróbuj ponownie otworzyć stronę w przeglądarce. Jeśli to działa (patrz ” testowanie…”jako jego wyjście) wtedy wiesz, że twój serwer jest co najmniej skonfigurowywłaściwie do uruchamiania skryptów Perl CGI. Jeśli to nie działa, to może być problem w konfiguracji serwera, a nie z Twoim CGIscript. (Na przykład, czy na pewno masz zainstalowanego Perla? Praktycznie wszystkie serwery UNIX/Linux/OS X, ale serwery Windows zwykle muszą mieć go zainstalowanego ręcznie, z darmowego pakietu, takiego jak ActivePerl.)

zakładając, że serwer jest poprawnie skonfigurowany do uruchamiania skryptów CGI, twój problem może być jedną z najczęstszych przyczyn wewnętrznego błędu serwera:

problemy poza skryptem:

  1. uprawnienia do katalogów: Twój katalog cgi-bin powinien być chmodowany jako 0755, a nie 0777. Podobnie, jeśli twój skrypt jest na …/ cgi-bin / foo / bar.cgi, katalog foo nie może być zapisywalny na świecie (0777). Dzieje się tak dlatego, że wiele serwerów odmówi wykonywania skryptów CGI w katalogach World-writabledirector, jako zabezpieczenie bezpieczeństwa.
  2. uprawnienia do plików: Twój skrypt CGI również musi mieć wartość 0755,a nie 0777, z tych samych powodów.
  3. tryby transferu: jeśli używasz FTP do przesyłania skryptu CGI na serwer, twój klient FTP prawdopodobnie jest ustawiony na tryb automatycznego przesyłania; to, spróbuje dowiedzieć się, czy używać trybu binarnego, czy ASCII bez konieczności zadawania Ci pytań. Ale w zależności od tego, czy skrypt CGI pochodzi z systemu Windows lub UNIX, i czy przechodzi do systemu Windows lub UNIXsystem, może być konieczne ręczne ustawienie klienta FTP, aby używał trybu binarnego ASCIIor przed przeniesieniem skryptu CGI. Spróbuj jednego, a potem drugiego.
  4. zakończenia linii: przyczyną problemu z trybem transferu jest w rzeczywistości inny problem sam w sobie: różne typy systemów operacyjnych (mianowicie Windowsvs. UNIX / Linux / everything) używa różnych kodów znaków do reprezentowania zakończeń linii. Jeśli twój serwer jest serwerem UNIX, ale edytujesz swój skrypt CGI na komputerze z systemem Windows z edytorem tekstu, który nie używa zakończeń liniowych w stylu UNIX, spowoduje to problemy. Aplikacje takie jak GoLive i Dreamweaver czasami się mylą. Nawet wbudowani edytorzy nie mogą się zgodzić: WordPad (nie Word) wydaje się, że robi to dobrze, podczas gdyenotepad to psuje. Więc spróbuj otworzyć & zapisując skrypt CGI w innym edytorze tekstowym i przesłać go ponownie na serwer.

problemy w skrypcie:

  1. linia shebang: pierwsza linia skryptu CGI musi zawierać ścieżkę do pliku binarnego Perla na serwerze. Na większości serwerów UNIX to tylko #!/ usr / bin / perl lub czasami #!/ usr / local / bin / perl i możesz zawsze uruchamiać polecenie “który perl”, aby się upewnić. Na serwerach Windowsservers możesz czasami uciec po prostu za pomocą #!perl, ale musisz podać pełną ścieżkę jak #!c:\path\to\perl.exe.
  2. rzeczywiste błędy skryptu: zawsze jest możliwe, że jest po prostu błąd w samym kodzie Perla. Jeśli masz problemy ze skryptem zakupionym w Encodable Industries, jest to mało prawdopodobne, ponieważ wiele innych osób kupiło ten sam skrypt i uruchamiają go po prostu.

powiązane problemy

  1. Innym częstym problemem ze skryptami CGI jest premature end pliku script headerserror.

Leave a Reply