webalkalmazások okai és javításai 2004 óta.

500 Belső Szerverhiba

…és hogyan lehet megjavítani.

a rövid válasz: ez általában egy engedélyezési hiba a CGIscript – en, amelyet könnyű kijavítani. Nyissa meg az FTP klienst vagy a webhely fájlkezelőjét, jelölje ki vagy kattintson a jobb gombbal a CGI parancsfájlra. Ezután válassza a “chmod” lehetőséget, és állítsa be a world-executable: that ‘ s0755, vagy a+rx, vagy-rwxr-xr-x értéket. ne használja a 0777-et (a+rwx vagy-rwxrwxrwx). Magának a cgi-bin könyvtárnak is 0755-nek kell lennie, nem pedig 0777-nek.

a hosszú válasz:ha olyan Perl CGI szkriptet futtat, mint a FileChucker vagyuserbase, akkor a böngészőben láthatja a “belső szerverhiba”üzenetet. Az üzenet általában valami olyasmit is mond, mint például: “további információkért ellenőrizze a szerver hibanaplóját.”Ezt meg kell tennie-a hibanaplóba nyomtatott üzenet gyakran megmondja, hogy pontosan mi a probléma. Például az Apache hibanaplógyakran a /var/log/apache/error_log vagy a /var/log/apache2/error_log (vagynéha “hiba.napló”).

ha nincs hozzáférése a hibanaplóhoz, a következő legegyszerűbb dolog az, hogy készítsen biztonsági másolatot a szkriptről, majd nyissa meg az eredetit, törölje az összes tartalmát, és csak ezt a 3 sort adja hozzá a fájlhoz:

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

(Megjegyzés: Ha a kiszolgáló Windows rendszer, akkor cserélje ki az első sort above-val vagy #!perl vagy #!c:\path\to\perl.exe.)

most próbálja meg újra elérni az oldalt a böngészőben. Ha működik (lásd: “tesztelés…”mint a kimenet), akkor tudja, hogy a szerver legalább konfiguráltmegfelelően futó Perl CGI szkriptek. Ha nem működik, akkor ez lehetazt jelenti, hogy a probléma a kiszolgáló konfigurációjában van, nem pedig a CGIscript-ben. (Például biztos benne, hogy valóban telepítette a Perl-t? Gyakorlatilag az összes UNIX / Linux / OS X szerver igen, de a Windows szervereknek általában szükségük vankézzel telepítse, egy olyan ingyenes csomagból, mint az ActivePerl.)

feltételezve, hogy a kiszolgáló megfelelően van konfigurálva a CGI parancsfájlok futtatásához, a probléma a belső szerverhiba egyik gyakori oka lehet:

problémák a parancsfájlon kívül:

  1. Directory engedélyek: a cgi-bin könyvtárat 0755,nem 0777 néven kell chmoddolni. Hasonlóképpen, ha a szkript van …/ cgi-bin / foo / bár.cgi, a foo könyvtár nem lehet világírható (0777). Ennek oka az, hogy sok szerver biztonsági óvintézkedésként megtagadja a CGI szkriptek végrehajtását a world-writabledirectkönyvtárakban.
  2. fájlengedélyek: a CGI parancsfájlnak szintén 0755-nek kell lennie,nem pedig 0777-nek, ugyanezen okokból.
  3. átviteli módok: ha FTP-t használ a CGI szkript átviteléhez a kiszolgálóra, akkor az FTP-kliens valószínűleg automatikus átviteli módra van állítva; ez azt jelenti, hogy megpróbálja kitalálni, hogy bináris vagy ASCII módot használ-e anélkül, hogy megkérdezné. De attól függően, hogy a CGI script jött aWindows vagy UNIX rendszer, és hogy ez lesz a Windows vagy UNIXsystem, akkor lehet, hogy manuálisan kell beállítani az FTP kliens használni akár ASCIIOR bináris módban átvitele előtt a CGI script. Próbáld ki az egyiket, majd a másikat.
  4. Vonalvégződések: az átviteli mód problémájának oka valójában egy másikmagában a probléma: különböző típusú operációs rendszerek (nevezetesen Windowsvs. UNIX / Linux / minden) használjon különböző karakterkódokat a reprezentációhozvonalvégződések. Ha a kiszolgálója UNIX-kiszolgáló, de a CGI-szkriptet olyan Windows-számítógépen szerkeszti, amelynek szövegszerkesztője nem használ UNIX-stílusú sorvégződéseket, az problémákat okoz. Az olyan alkalmazások, mint a GoLive és a Dreamweaver, néha tévednek. Még a beépített szerkesztők sem tudnak egyetérteni: úgy tűnik, hogy a WordPad (nem a Word) jól működik, míg a notepad elrontja. Tehát próbálja meg megnyitni a & CGI-szkriptet egy másik szövegszerkesztőben, és töltse fel újra a szerverre.

problémák a szkriptben:

  1. a shebang vonal: a CGI parancsfájl első sorának tartalmaznia kella Perl bináris elérési útja a kiszolgálón. A legtöbb UNIX szerveren ez csak #!/usr / bin / perl vagy néha #!/usr / local / bin / perl ésMindig futtassa a “melyik perl” parancsot, hogy biztosan megtudja. A Windowsservers, akkor néha megússza csak a #!perl de lehet, hogy meg kell adnia a teljes elérési utat, például #!c:\path\to\perl.exe.
  2. tényleges szkripthibák: mindig lehetséges, hogy egyszerűen a Perl kódban van hiba. Ha gondjai vannak a Scriptyou vásárolt Encodable Industries, ez nem valószínű, mivel sok más ember vásárolt pontosan ugyanazt a forgatókönyvet, és fut justfine.

kapcsolódó problémák

  1. a CGI szkriptek másik gyakori problémája a szkriptfejlécek korai vége hiba.

Leave a Reply