Applications Web Depuis 2004.
500 Erreur de serveur interne
…et comment le réparer.
La réponse courte: il s’agit généralement d’une erreur d’autorisation sur votre CGIscript, qui est facile à corriger. Accédez à votre client FTP ou à votre gestionnaire de fichiers de site Web et mettez en surbrillance ou cliquez avec le bouton droit sur le script CGI. Ensuite, choisissez Properties, ou Permissions, ou “Chmod”, et définissez-le sur world-executable: c’est0755, ou a +rx, ou -rwxr-xr-x. N’utilisez PAS 0777 (a +rwx ou -rwxrwxrwx). Et votre répertoire cgi-bin lui-même devrait également être 0755, pas 0777.
La réponse longue:lorsque vous exécutez un script CGI Perl comme FileChucker orUserBase, vous pouvez voir le message “Erreur interne du serveur” dans votre navigateur. Le message dira généralement aussi quelque chose comme “veuillez vérifier le journal des erreurs du serveur pour plus d’informations.”Vous devez le faire the le message imprimé dans le journal des erreurs vous indiquera souvent exactement quel est le problème. Le journal des erreurs Apache, par exemple, se trouve souvent dans /var/log/apache/error_log ou /var/log/apache2/error_log (ouparfois “erreur.journal”).
Si vous n’avez pas accès au journal des erreurs, la prochaine chose la plus simple à faire est de faire une copie de sauvegarde du script, puis d’ouvrir l’original et de supprimer tous ses contenus, et d’ajouter seulement ces 3 lignes au fichier:
#!/usr/bin/perlprint "Content-type: text/plain\n\n";print "testing...\n";
( Remarque : si le serveur est un système Windows, remplacez la première ligne ci-dessus par #!perl ou #!c:\path\to\perl .EXE.)
Essayez maintenant d’accéder à nouveau à la page dans votre navigateur. Si cela fonctionne (vous voyez “test…”comme sa sortie) alors vous savez que votre serveur est au moins configuré correctement pour exécuter des scripts CGI Perl. Si cela ne fonctionne pas, cela peut signifier que le problème réside dans la configuration du serveur, plutôt qu’avec votre CGIscript. (Par exemple, êtes-vous sûr d’avoir réellement installé Perl? Pratiquement tous les serveurs UNIX / Linux / OS X le font, mais les serveurs Windows doivent généralement l’installer manuellement, à partir d’un package gratuit comme ActivePerl.)
En supposant que votre serveur est correctement configuré pour exécuter des scripts CGI, votre problème peut être l’une des causes courantes de l’erreur interne du serveur :
Problèmes en dehors du script:
- Autorisations de répertoire: votre répertoire cgi-bin doit être chmoddé comme 0755, pas 0777. De même si votre script est à…/ cgi-bin / foo/bar.cgi, le répertoire foo ne doit pas être accessible en écriture mondiale (0777). En effet, de nombreux serveurs refuseront d’exécuter des scripts CGI dans des répertoires en écriture mondiale, par mesure de sécurité.Autorisations de fichier
- : votre script CGI lui-même doit également être 0755 et non 0777, pour les mêmes raisons.
- Modes de transfert: si vous utilisez FTP pour transférer le script CGI vers votre serveur, votre client FTP est probablement configuré en mode de transfert AUTOMATIQUE; c’est, il essaiera de déterminer s’il faut utiliser le mode BINAIRE ou ASCII sans vous fatiguer. Mais selon que votre script CGI provient d’un système aWindows ou UNIX, et qu’il passe sur un système Windows ou UNIX, vous devrez peut-être configurer manuellement votre client FTP pour qu’il utilise l’un ou l’autre mode BINAIRE ASCIIor avant de transférer votre script CGI. Essayez l’un, puis l’autre.
- Fins de ligne: la cause du problème du mode de transfert est en fait un autreproblème en soi: différents types de systèmes d’exploitation (à savoir, Windowsvs. UNIX /Linux /everything) utilisent différents codes de caractères pour représenter les fins de ligne. Si votre serveur est un serveur UNIX, mais que vous éditez votre script CGI sur un ordinateur Windows avec un éditeur de texte qui n’utilise pas de fins de ligne de style UNIX, cela posera des problèmes. Des applicationscomme GoLive et Dreamweaver se trompent parfois. Même les éditeurs intégrés ne peuvent pas être d’accord: WordPad (pas Word) semble bien faire les choses tandis que le bloc-notes le gâche. Essayez donc d’ouvrir & en enregistrant votre script CGI dans un éditeur de texte différent et en le téléchargeant à nouveau sur le serveur.
Problèmes dans le script:
- La ligne shebang: la première ligne d’un script CGI doit contenir le chemin vers le binaire Perl sur le serveur. Sur la plupart des serveurs UNIX, c’est juste #!/usr/bin/perl ou parfois #!/usr/local/bin/perl et vous pouvezexécutez toujours la commande “quel perl” pour le savoir à coup sûr. Sur les serveurs de fenêtres, vous pouvez parfois vous en tirer en utilisant simplement #!perl mais vous devrez peut-être spécifier le chemin complet comme #!c:\path\to\perl .EXE.
- Erreurs de script réelles: il est toujours possible qu’il y ait simplement une erreur dans le code Perl lui-même. Si vous rencontrez des problèmes avec un script que vous avez acheté auprès d’Industries codables, cela est peu probable car de nombreuses autres personnes ont acheté le même script exact et l’exécutent simplement.
Problèmes connexes
- Un autre problème courant avec les scripts CGI est la fin prématurée de script headerserror.
Leave a Reply