Search

Language:  

Available article translations:

Une erreur interne 500 s'affiche lorsque j'essaie d'appeler mon script cgi par l'URL à l'aide d'un navigateur. De quoi s'agit-il dans ce cas ?

Résolution

1. Vérifiez /etc/httpd/logs/suexec_log ou /var/log/httpd/suexec_log pour voir s'il y a des erreurs tout en essayant d'exécuter les scripts CGI. Suexec détecte les erreurs de propriété et de droits.

Assurez-vous que le dossier cgi-bin/ folder a la propriété et les droits suivants :

drwxr-x--- myuser psaserv cgi-bin

Le script lui-même doit être possédé par l'utilisateur FTP du domaine mais le groupe doit être 'psacln':

-rwxr-xr-x myuser psacln script.cgi

Assurez-vous que les droits du fichier de script et l'arborescence du répertoire (relatif au document root du serveur) ne sont pas définis à plus de 755 ou utilisateur: lire, écrire, exécuter; groupe: lire, exécuter; autres: lire, exécuter (-rwxr-xr-x).

2. Parallels Plesk Panel utilise son propre fichier suexec et il se peut qu'il soit remplacé par l'original qui s'accompagne du pack apache standard. Dans ce cas, vous devez le restaurer à l'aide de la commande :
# /bin/cp /usr/sbin/psa-suexec /usr/sbin/suexec

Si SuSe 9.x est utilisé, alors /usr/sbin/suexec2 doit être remplacé par l'original.
# /bin/cp /usr/sbin/psa-apache2-suexec /usr/sbin/suexec2

Pour l'OS Debian, veuillez utiliser cette ligne de commande :
# /bin/cp /opt/psa/suexec/psa-suexec2 /usr/lib/apache2/suexec2

Pour les détails concernant la mise à niveau d'Apache sur le serveur Parallels Plesk Panel, veuillez suivre l'article 762.

3. Le script peut contenir des symboles de retour charriot de Windows à la fin de chaque ligne qui n'ont pas été supprimés lorsque vous avez téléchargé le serveur par le FTP à partir du poste de travail de Windows.

La fin des lignes dans les fichiers est marquée par des caractères masqués 'retour charriot' (CR) et saut de ligne (LF) sur les systèmes Windows alors que les systèmes Unix marquent la fin des lignes par des caractères LF uniquement.

Il est nécessaire d'envoyer les fichiers texte en mode Transfert ASCII à partir de Windows. Dans ce cas, les caractères CR et LF seront remplacés uniquement par des LF. Si les scripts CGI sont envoyés en mode BINAIRE, les fichiers sont envoyés tels quels sans conversion. Une fois le script exécuté, les caractères CR sonr reconnus en tant que parties du texte et ne sont pas interprétés correctement, par ex :

#!/usr/bin/perlCR
use strict;CR

Vous pouvez également définir le mode de transfert par défaut pour l'ensemble du serveur ASCII dans le fichier /etc/proftpd.conf :

DefaultTransferMode ascii

Pour vérifier et corriger le script déjà envoyé avec les caractères CR, utilisez manuellement l'une des variantes suivantes :

a) supprimez les CR avec l'utilitaire col :
# cd /home/httpd/vhosts/domain.com/cgi-bin
# col -bx < script.cgi > script2.cgi
# ls -l
total 84
-rw-r--r-- 1 myuser psacln 27683 Jun 14 15:51 script2.cgi
-rwxr-xr-x 1 myuser psacln 25753 Jun 14 11:20 script.cgi
# mv script2.cgi script.cgi
mv: overwrite `script.cgi'? y
# chmod 755 script.cgi
# chown myuser:psacln script.cgi

Veuillez utiliser le nom du prorpiétaire du script au lieu de mon utilisateur.

b) ouvrez le fichier dans l'éditeur de texte pico et enregistrez-le puis supprimez les symboles CD du fichier.
# pico script.cgi


4. Exécutez le script à partir de la ligne de commande et vérifiez les erreurs.
Exemples :
 
# cd /home/httpd/vhosts/domain.com/cgi-bin
# ./script.cgi
: mauvaise interprétation. Aucun fichier ou répertoire

Vérifiez le script pour vous assurer que le commentaire magique indique où perl se situe : #!/usr/bin/perl et/ou vérifiez le symbole CR à la fin de la ligne #!/usr/bin/perl, comme il est décrit dans l'option 3.

ou
# ./script.cgi
La chaîne à été trouvée là où l'opérateur est attendu à sc.cgi ligne 3, à côté de "xcprint """
(Devez-vous prédéclarer xcprint ?)
erreur de syntaxe au niveau de sc.cgi ligne 3, à côté de "xcprint """
L'exécution de sc.cgi s'est interrompue en raison d'erreurs de compilation.

Cet exemple indique qu'il y a une erreur de syntaxe dans ce script  et rien ne fonctionnera tant que vous ne l'aurez pas corrigée.



FEEDBACK
Was this article helpful?
Tell us how we may improve it.
Yes No