L’erreur 500 « Internal Server Error » se produit lorsque le script que vous avez placé sur le serveur ne peut pas être exécuté, lorsqu’il y a des erreurs dans le script ou lorsqu’une instruction incorrecte est placée dans le fichier .htaccess. Cette liste de raisons pour lesquelles l’erreur 500 peut se produire n’est pas exhaustive ; il existe de nombreuses autres raisons pour lesquelles l’erreur 500 peut se produire. Cependant, les trois cas mentionnés sont les plus courants.

Considérons d’abord le cas où vous avez placé une instruction incorrecte dans le fichier .htaccess. Si vous avez fait une erreur dans l’orthographe du nom de la directive requise ou de ses paramètres, vous trouverez quelque chose comme l’erreur suivante dans le fichier error.log :

[Wed Apr 14 17:01:38 2004] [alert] [client 217.16.16.16]

/home/uXXXXX/aaa.ru/www/.htaccess:Invalid command 'DrectoryIndex',

perhaps mis-spelled or defined bya module not included in the server

configuration

 

Le serveur Web vous indiquera quelle directive spécifique il considère comme erronée et devra être corrigée. Dans ce cas, le serveur Web a signalé qu’il ne connaissait pas la directive DrectoryIndex. Et en effet, il n’y a pas de directive DrectoryIndex, il y a DirectoryIndex. Il y a une erreur de frappe.

Si l’erreur 500 se produit lors de l’accès à un script Perl situé dans le répertoire cgi-bin, vous devez vérifier les droits d’accès à ce script. Les permissions doivent être 755 (rwxrx-rx). Si ce n’est pas le cas, vous devez modifier les droits à 755 en utilisant la commande chmod 755 script.pl dans le shell Unix ou utiliser FTP pour cela. Il convient de noter séparément que les permissions pour les scripts doivent être définies strictement sur 755.

Veuillez vérifier si vous avez utilisé le bon mode de transfert de fichiers FTP lors du téléchargement du script sur notre serveur. Tous les scripts, ainsi que tous les autres fichiers texte, doivent être transférés via FTP en mode texte (ASCII). Si le mode de transfert de fichiers binaires a été utilisé, les scripts ne fonctionneront probablement pas.

Si, après avoir vérifié l’exactitude des droits définis sur le fichier de script, l’erreur ne disparaît pas, vous devez examiner les dernières entrées dans le fichier error.log – le serveur Web y place tous les messages d’erreur. Vous trouverez donc une ligne comme

[Fri Apr  9 15:05:31 2004] [error][client 217.16.16.16] Premature end of

script headers: /home/uXXXX/aaa.ru/cgi-bin/script.pl

 

La première chose à faire lorsque vous recevez une telle erreur est de vérifier si le script génère correctement les en-têtes HTTP. Chaque script doit d’abord imprimer une ligne indiquant le type de contenu correspondant et ensuite seulement ce que l’utilisateur verra directement (par exemple, du code HTML). Un exemple de ligne pour afficher le titre d’un document HTML normal :

print "Content-type: text/html; charset=windows-1251\n\n";

 

Si, après avoir émis les en-têtes corrects, l’erreur 500 ne disparaît pas, vous devez vérifier le bon fonctionnement du script dans son ensemble. Pour ce faire, vous devez accéder au shell Unix, puis exécuter la commande de vérification de syntaxe :

> perl -cw script.pl

script.pl syntax OK

 

Si le script est écrit avec des erreurs, celles-ci doivent être corrigées à l’aide des diagnostics appropriés et la syntaxe du script doit être vérifiée à nouveau.