IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

[CGI] Probleme à l éxécution


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2003
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 99
    Par défaut [CGI] Probleme à l éxécution
    Bonjour,


    J'ai realiser un petit programme en c afin d'en faire un CGI. lorsque je lance mon executable j'ai un formidable : Internal Server Error

    dans les log d apache : Premature end of script headers: servisello.exe, referer: http://localhost/

    Suite a quelque recherche, des personnes ont le meme probleme mais leur probleme est en faite un oubli du printf("Content-type: text/html\n\n");

    mon programme c me genere une image cette image est bien generer mais je ne peux pas faire grand chose du au Internal server error.

    Quelqu'un a t'il eu la meme chose ? et a t'il une solution?

    merci

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 647
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 647
    Par défaut
    En quel langage est développé ton script ?

    Lance le en ligne de commande, parfois ça suffit à trouver le problème

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2003
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 99
    Par défaut
    le script est fait en c, et fait appel à des libraires graphique c afin de generer une image.

    en ligne de commande ??? comment ca ???

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2003
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 99
    Par défaut
    Bonjour,


    Suite a beaucoup d essai, j'ai remarqué que lorsque je faisais les includes de mes bibliotheque graphique le script cgi generait un internal server error.

    ce code par exemple fonctonne tres bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char* args[])
    {
    char *data;
    long m,n;
    printf("%s%c%c\n","Content-Type:text/html;charset=iso-8859-1",13,10);
    data = getenv("QUERY_STRING");
    if(data == NULL)
      printf("<P>errr.");
    else if(sscanf(data,"m=%ld&n=%ld",&m,&n)!=2)
      printf("<P>errrrrrrr.");
    else
      printf("<P>hop ca %ld et %ld = %ld.",m,n,m*n);
    return 0;
    }
    et celui la non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    #include <stdio.h>
    #include <stdlib.h>
    #include "SDL/SDL.h"
    #include "SDL/SDL_image.h"
    #include "SDL/SDL_ttf.h"
    #include "SDL/SDL_rotozoom.h"
    #include <math.h>
     
     
    int main(int argc, char* args[])
    {
    char *data;
    long m,n;
    printf("%s%c%c\n",
    "Content-Type:text/html;charset=iso-8859-1",13,10);
    printf("<TITLE>Multiplication results</TITLE>\n");
    printf("<H3>Multiplication results</H3>\n");
    data = getenv("QUERY_STRING");
    if(data == NULL)
      printf("<P>Error! Error in passing data from form to script.");
    else if(sscanf(data,"m=%ld&n=%ld",&m,&n)!=2)
      printf("<P>Error! Invalid data. Data must be numeric.");
    else
      printf("<P>The product of %ld and %ld is %ld.",m,n,m*n);
    return 0;
    }

  5. #5
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 647
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 647
    Par défaut
    en ligne de commande je voulais parler de le lancer dans une console comme un programme "normal", comme ça tu verras tous les messages d'erreurs

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2003
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 99
    Par défaut
    Bonjour,

    oui et bien il n y a aucune erreur en faite voila le probleme.

  7. #7
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Salut,

    Il faut que ton programme envoie le dernier entete HTTP, si il n'y en a pas ou que ton programme a planté avant que cet entete soit envoyé, il y aura internal server error.
    Comme ils le disaient, il faut au minimum le content-type suivit de 2 sauts de ligne pour indiquer qu'on en a fini avec les entetes HTTP.
    Il s'avere que les sauts de ligne dans la RFC HTTP sont CRLF c'est à dire \r\n
    DONC, il faut 2 fois \r\n pour marquer la fin des entetes et tu ne le mets qu'une fois

    Ensuite, si tu veux generer une image, ce n'est surement pas le content-type text/html qu'il te faut specifier, mais le content-type correspondant au format de ton image générée

  8. #8
    Membre confirmé
    Inscrit en
    Mai 2003
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 99
    Par défaut
    bonjour,

    j ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    printf("<meta http-equiv=\"Content-Type\" content=\"text/html; ISO-8859-1\">");
        //printf("Content-Type:text/html;charset=iso-8859-1\r\n\r\n");
        printf("<br><br>");
        printf("coucou");
    rien n y fait. j essaii tout ce qui me vient a l esprit en faite.

    ce que je n arrive pas a comprendre c est lorsque je fait des include de mes librairie graphique C, le cgi ne fonctionne plus,

    pour le moment j essai juste d afficher un texte ensuite l image bmp generer j essairai de l integrer.

    j ai realiser un script cgi tout simple une multiplication, ca fonctionne bien le script fait 70 ko, j inclu juste les librairie graphique c, qui ne seront pas utiliser puisque le script fait juste une multiplication, le script apres compilation fait 407 ko et Internal server error.

    je ne vois plus ce que je peux faire

  9. #9
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 647
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 647
    Par défaut
    Citation Envoyé par ankou82
    j ai realiser un script cgi tout simple une multiplication, ca fonctionne bien le script fait 70 ko, j inclu juste les librairie graphique c, qui ne seront pas utiliser puisque le script fait juste une multiplication, le script apres compilation fait 407 ko et Internal server error.
    quand tu lances ce script en ligne de commande, est ce que tu vois le résultat de la multiplication ?

  10. #10
    Membre confirmé
    Inscrit en
    Mai 2003
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 99
    Par défaut
    alors en ligne de commande :

    sans inclure les librairie graphique oui je vois le resultat.

    en incluant les librairie je ne le vois pas, SDL a sa propre sortie standard en faite il me cree un fichier stdout avec dedans le resultat.

    le probleme vient certainement de la, j ai oublier comment rediriger la sortie standard mais je vais chercher

  11. #11
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Les fonctions de ta librairie affichent peut être quelquechose sur la sortie standard
    On peut imaginer "Warning: this is not a valid jpeg"

    Et cela avant ton content-type

  12. #12
    Membre confirmé
    Inscrit en
    Mai 2003
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 99
    Par défaut
    l'image est generer a la fin de mon script c, et le content type quelque ligne apres le main.

    le server apache ne voit pas ce que je lui envoi car tout est redirigé vers le fichier stdout.txt, et il semble que ce soit difficile de remedier a cela.

  13. #13
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Ah oui d'accord, bein tu es obligé de terminer les entetes HTTP, donc si ton programme n'écrit rien, yaura forcement internal server error

  14. #14
    Membre confirmé
    Inscrit en
    Mai 2003
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 99
    Par défaut
    c'etait bien un probleme de redirection de sortie standard.

    merci a vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Initialiser LUA [probleme d'éxécution]
    Par Clad3 dans le forum C++
    Réponses: 10
    Dernier message: 14/01/2007, 17h28
  2. CGI probleme de script
    Par bigoter dans le forum Général Conception Web
    Réponses: 5
    Dernier message: 03/07/2006, 11h46
  3. Probleme d'éxécution de mes pages JSP
    Par ijklm dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 02/06/2006, 17h48
  4. cgi, probleme bizarre
    Par djibril dans le forum Web
    Réponses: 16
    Dernier message: 07/04/2006, 09h45
  5. Bash CGI problème retour chariot
    Par ska_root dans le forum Linux
    Réponses: 4
    Dernier message: 22/02/2006, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo