Applicazioni Web dal 2004.

500 Errore interno del server

…e come risolverlo.

La risposta breve: questo di solito è un errore di autorizzazioni sul tuo CGIscript, che è facile da risolvere. Vai al tuo client FTP o al filemanager del tuo sito web ed evidenzia o fai clic con il pulsante destro del mouse sullo script CGI. Quindi Scegliproprietà, o Autorizzazioni ,o “Chmod”, e impostalo su world-executable: that’s0755, o a+rx, o-rwxr-xr-x. Non usare 0777 (a+rwx o-rwxrwxrwx). E anche la tua directory cgi-bin dovrebbe essere 0755, non 0777.

La risposta lunga:quando si esegue uno script CGI Perl come FileChucker orUserBase, è possibile visualizzare il messaggio “Errore interno del server” nel browser. Il messaggio di solito dirà anche qualcosacome ” si prega di controllare il log degli errori del server per ulteriori informazioni.”Youshould farlo the il messaggio stampato nel registro degli errori spesso ti dirà esattamente qual è il problema. Il registro degli errori di Apache, ad esempio, si trova spesso in /var/log/apache/error_log o /var/log/apache2/error_log (o a volte “errore”.log”).

Se non hai accesso ai log di errore, la prossima cosa più semplice da fare è fare una copia di backup dello script, quindi aprire l’originale e cancellare tutti itscontents, e aggiungere solo queste 3 righe al file:

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

(Nota: se il server è un sistema di Windows, quindi sostituire la prima riga abovewith o #!perl o #!c:\path\to\perl.exe.)

Ora prova ad accedere nuovamente alla pagina nel tuo browser. Se funziona (vedi ” test…”come il suo output) allora sai che il tuo server è almeno configurato in modo corretto per l’esecuzione di script CGI Perl. Se non funziona, allora potrebbe significare che il problema è nella configurazione del server, piuttosto che con il tuo CGIscript. (Ad esempio, sei sicuro di aver effettivamente installato Perl? Praticamente tutti i server UNIX/Linux/OS X lo fanno, ma i server Windows di solito hanno bisogno di installarlo manualmente, da un pacchetto gratuito come ActivePerl.)

Supponendo che il server sia configurato correttamente per l’esecuzione di script CGI, il problema potrebbe essere una di queste cause comuni per l’errore interno del server:

Problemi al di fuori dello script:

  1. Autorizzazioni directory: la tua directory cgi-bin dovrebbe essere chmodded come 0755, non 0777. Allo stesso modo se il tuo script è a …/ cgi-bin / foo / bar.cgi, la directory foo non deve essere scrivibile in tutto il mondo (0777). Questo perché molti server si rifiuteranno di eseguire script CGI all’interno di world-writabledirectories, come precauzione di sicurezza.
  2. Permessi file: anche lo script CGI deve essere 0755 e non 0777, per gli stessi motivi.
  3. Modalità di trasferimento :se si utilizza FTP per trasferire lo script CGI al server, il client FTP è probabilmente impostato sulla modalità di trasferimento automatico; questo è, cercherà di capire se usare la modalità BINARIA o ASCII senza chiederti. Ma a seconda che il tuo script CGI provenga da un sistema WINDOWS o UNIX e che stia andando su un sistema Windows o UNIXsystem, potrebbe essere necessario impostare manualmente il tuo client FTP per utilizzare la modalità BINARIA ASCIIor prima di trasferire lo script CGI. Prova uno e poil’altro.
  4. Terminazioni di linea: la causa del problema della modalità di trasferimento è in realtà un altroproblema in sé: diversi tipi di sistemi operativi (vale a dire, Windowsvs. UNIX / Linux / everything) usa codici di caratteri diversi per rappresentarelinea-finali. Se il tuo server è un server UNIX, ma stai modificandoil tuo script CGI su un computer Windows con un editor di testo che non usa terminazioni di riga in stile UNIX, causerà problemi. Applicationslike GoLive e Dreamweaver a volte sbagliano. Anche i built-ineditors non possono essere d’accordo: WordPad (non Word) sembra farlo bene whileNotepad lo incasina. Quindi prova ad aprire & salvando il tuo script CGI in un editor di testo diverso e caricandolo di nuovo sul server.

Problemi all’interno dello script:

  1. La linea shebang: la prima riga di uno script CGI deve contenere ilpercorso al binario Perl sul server. Sulla maggior parte dei server UNIX thisis solo #!/ usr / bin / perl o qualche volta #!/usr/local/bin / perl e puoieseguire sempre il comando “quale perl” per scoprirlo con certezza. Su Windowsservers, a volte puoi farla franca usando solo #!perl ma potresti aver bisogno di specificare il percorso completo come #!c:\path\to\perl.exe.
  2. Errori di script effettivi: è sempre possibile che ci sia semplicemente un errore nel codice Perl stesso. Se hai problemi con uno scriptyou acquistato da Encodable Industries, questo è improbabile dal momento che molte altre persone hanno acquistato lo stesso script esatto e lo stanno eseguendo justfine.

Problemi correlati

  1. Un altro problema comune con gli script CGI è la fine prematura delle intestazioni degli script error.

Leave a Reply