webové aplikace od roku 2004.

500 Chyba Interního Serveru

…a jak to opravit.

krátká odpověď: Toto je obvykle chyba oprávnění na vašem CGIscript, kterou lze snadno opravit. Přejděte do svého FTP klienta nebo správce souborů webových stránek a zvýrazněte nebo klepněte pravým tlačítkem myši na skript CGI. Pak vybertevlastnosti nebo oprávnění nebo “Chmod” a nastavte jej na world-executable: to je0755 nebo a + rx nebo-rwxr-xr-x. nepoužívejte 0777 (a + rwx nebo-rwxrwxrwx). A váš adresář cgi-bin sám by měl být také 0755, ne 0777.

dlouhá odpověď:při spuštění skriptu Perl CGI, jako je FileChucker nebouserbase, se v prohlížeči může zobrazit zpráva “Interní chyba serveru”. Zpráva obvykle také řekne něco podobného “další informace naleznete v protokolu chyb serveru.”Youshould do that-zpráva vytištěná do protokolu chyb často tellyou přesně to, co je problém. Například protokol chyb Apache je často umístěn na adrese/var/log /apache/error_log nebo/var/log / apache2 / error_log (neboněkdy “chyba.protokol”).

pokud nemáte přístup k protokolu chyb, další nejjednodušší věc, kterou musíte udělat, jevytvořte záložní kopii skriptu, otevřete originál a odstraňte všechny jehoobsahy a přidejte do souboru pouze tyto 3 řádky:

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

(Poznámka: Pokud je server systémem Windows, nahraďte první řádek výše buď #!perl nebo #!c:\path\to\perl.exe.)

nyní se pokuste znovu otevřít stránku v prohlížeči. Pokud to funguje (vidíte ” testování…”jako jeho výstup) pak víte, že váš server je alespoň nakonfigurován pro spouštění skriptů Perl CGI. Pokud to nefunguje, může to býtznamená, že problém je v konfiguraci serveru, spíše než s vaším CGIscript. (Jste si například jisti, že jste skutečně nainstalovali Perl? Prakticky všechny servery UNIX / Linux/OS X to dělají, ale servery Windows obvykle potřebují nainstalovat ručně, z bezplatného balíčku, jako je ActivePerl.

za předpokladu, že je váš server správně nakonfigurován pro spouštění skriptů CGI, může být váš problém jednou z těchto běžných příčin chyby interního serveru:

problémy mimo skript:

  1. oprávnění adresáře: váš adresář cgi-bin by měl být chmodded jako 0755, ne 0777. Podobně, pokud je váš skript na …/cgi-bin/foo / bar.cgi, adresář foo nesmí být zapisovatelný do světa (0777). Je to proto, že mnoho serverů odmítne jako bezpečnostní opatření spouštět skripty CGI v rámci world-writabledirectories.
  2. oprávnění k souborům: váš CGI skript sám o sobě musí být také 0755 a ne 0777, ze stejných důvodů.
  3. režimy přenosu: pokud používáte FTP k přenosu skriptu CGI na váš server, je váš FTP klient pravděpodobně nastaven na režim automatického přenosu; to je, pokusí se zjistit, zda použít binární nebo ASCII režim, aniž by vás požádal. Ale v závislosti na tom, zda váš skript CGI pochází ze systému aWindows nebo UNIX a zda jde do systému Windows nebo UNIXsystem, možná budete muset ručně nastavit FTP klienta tak, aby před přenosem skriptu CGI používal buď binární režim ASCIIor. Zkuste jeden a pak druhý.
  4. konce řádků: příčina problému s přenosovým režimem je ve skutečnosti dalšíproblém sám o sobě: různé typy operačních systémů (jmenovitě Windowsvs. UNIX / Linux / everything) používají různé znakové kódy k reprezentaci koncovek. Pokud je váš server unixovým serverem, ale upravujete skript CGI v počítači se systémem Windows pomocí textového editoru, který nepoužívá konce řádků ve stylu Unixu, způsobí to problémy. Aplikace jako GoLive a Dreamweaver se někdy mýlí. Dokonce ani vestavěníeditoři nemohou souhlasit: WordPad (ne Word) se zdá, že to má pravdu, zatímco notepad to pokazí. Zkuste tedy otevřít & uložení skriptu CGIV jiném textovém editoru a znovu jej nahrát na server.

problémy ve skriptu:

  1. shebang line: první řádek skriptu CGI musí obsahovatcesta k binárnímu perlu na serveru. Na většině unixových serverů je to jen #!/ usr / bin / perl nebo někdy #!/ usr / local / bin / perl a můžetevždy spusťte příkaz “který perl”, abyste se ujistili. Na Windowsservers, můžete někdy dostat pryč s pouhým použitím #!perl, ale možná budete muset zadat úplnou cestu jako #!c:\path\to\perl.exe.
  2. skutečné chyby skriptu: vždy je možné, že v samotném kódu Perl je prostě chyba. Pokud máte potíže se skriptem, který jste zakoupili od Enkodable Industries, je to nepravděpodobné, protože mnoho dalších lidí si koupilo stejný přesný skript a běží jej justfine.

související problémy

  1. dalším běžným problémem skriptů CGI je konec hlavic skriptů.

Leave a Reply