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

Modules Perl Discussion :

Catalyst / FCGI : bug sous Windows x64 ?


Sujet :

Modules Perl

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 37
    Points : 40
    Points
    40
    Par défaut Catalyst / FCGI : bug sous Windows x64 ?
    Bonjour à tous,

    Je n'arrive pas à faire fonctionner le script myapp_fastcgi.pl qui est généré par Catalyst sur un environnement Windows 64bit, le serveur (que ce soit IIS7.5 ou Apache 2.4) me renvoi une erreur interne dans l'application.

    Après avoir pas mal tourné, j'ai lancé le script en mode console et j'ai le résultat suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Use of uninitialized value $value in pattern match (m//) at D:/perl/site/lib/Config/General.pm line 872.
    Use of uninitialized value in concatenation (.) or string at D:/perl/site/lib/Plack/Handler/FCGI.pm line 114, <DATA> line 998.
    Use of uninitialized value in quotemeta at D:/perl/site/lib/Plack/Handler/FCGI.pm line 116, <DATA> line 998.
    Use of uninitialized value in string eq at D:/perl/site/lib/Catalyst.pm line 2770, <DATA> line 998.
    Use of uninitialized value $host in substitution (s///) at D:/perl/site/lib/Catalyst/Engine.pm line 444, <DATA> line 998.
    Use of uninitialized value $host in concatenation (.) or string at D:/perl/site/lib/Catalyst/Engine.pm line 451, <DATA> line 998.
    Use of uninitialized value $host in concatenation (.) or string at D:/perl/site/lib/Catalyst/Engine.pm line 459, <DATA> line 998.
    Use of uninitialized value in string eq at D:/perl/site/lib/Catalyst/Action/RenderView.pm line 51, <DATA> line 998.
    binmode() on unopened filehandle GEN2 at D:/perl/site/lib/Plack/Handler/FCGI.pm line 165, <DATA> line 998.
    print() on unopened filehandle GEN2 at D:/perl/site/lib/Plack/Handler/FCGI.pm line 177, <DATA> line 998.
    Use of uninitialized value in string eq at D:/perl/site/lib/Catalyst.pm line 1817, <DATA> line 998.
    print() on unopened filehandle GEN2 at D:/perl/site/lib/Plack/Handler/FCGI.pm line 179, <DATA> line 998.
    Si je ne m'inquiete pas outre mesure des erreurs d'initialisation (en mode console il manque presque tout l'environnement serveur Web), les erreurs sur le file handler GEN2 me semblent suspectes car sur un environnement Windows 32bit le même script me renvoi le résultat suivant (toujours en mode console):

    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
     
    <blabla>
    Use of uninitialized value in string eq at D:/Perl/site/lib/Catalyst/Action/RenderView.pm line 51, <DATA> line 998.
    Status: 302 Found
    Location: http:///login
    Content-Length: 292
    Content-Type: text/html; charset=utf-8
    Set-Cookie: myapp_session=1e5994a41ea40c41764c4f2c0dc45592ef4b520f; path=/;
    expires=Wed, 25-Apr-2012 17:14:25 GMT; HttpOnly
    X-Catalyst: 5.90011
     
    Use of uninitialized value in string eq at D:/Perl/site/lib/Catalyst.pm line 1817, <DATA> line 998.
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/x
    html1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <title>Moved</title>
      </head>
      <body>
         <p>This item has moved <a href="http:///login">here</a>.</p>
      </body>
    </html>
    Ce qui ressemble bien plus a ce que le script devrait sortir en l'absence de tout environnement serveur.

    En creusant FCGI.pm, les erreurs sur le fh GEN2 semblent correspondre à un binmode et un print sur *STDOUT mais cela reste vague en l'absence de toute erreur plus précise. Rien n'explique pourquoi ce fh particulier serait clos (son nom remonte via IO:Handle donc relativement bas dans le core Perl).

    Notez que:
    - je ne rencontre aucune erreur avec le script myapp_cgi.pl ni avec myapp_server.pl
    - j'ai la même erreur avec un Perl 32bit installé sur le serveur Windows 64bit (ActivePerl pour être précis)
    - j'ai le même résultat sur Windows 7 64bit que sur Windows 2008 R2
    - tous les tests ont été réalisé avec un compte admin, UAC désactivée

    Je n'ai rien trouvé via Google qui pourrait correspondre à ce type d'erreur et je suis en panne d'idée. Est-ce que quelqu'un a déjà rencontré cela auparavant et trouvé une solution / piste ?

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 37
    Points : 40
    Points
    40
    Par défaut
    Après une comparaison du code des modules Plack::Handler::FCGI entre mes différents environnement il apparait que ma plateforme de dev (la 32 bit) avait une version plus ancienne.

    Les différences concernent la façon d'ouvrir stdin, stdout et stderr.

    L'ancienne version (pas d'erreur GEN2):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ( .. some code ..) 
     
    my %env; 
        my $request = FCGI::Request( 
            \*STDIN, \*STDOUT, 
     
            ($self->{keep_stderr} ? \*STDOUT : \*STDERR), \%env, $sock, 
            ($self->{nointr} ? 0 : &FCGI::FAIL_ACCEPT_ON_INTR), 
        );
    La nouvelle version (erreurs GEN2):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ( .. some code ..) 
     
       @{$self}{qw(stdin stdout stderr)}  
          = (IO::Handle->new, IO::Handle->new, IO::Handle->new); 
     
        my %env; 
        my $request = FCGI::Request( 
     
            $self->{stdin}, $self->{stdout}, 
            ($self->{keep_stderr} ? $self->{stdout} : $self->{stderr}), \%env, $sock, 
            ($self->{nointr} ? 0 : &FCGI::FAIL_ACCEPT_ON_INTR), 
        );
    Remplacer le nouveau module FCGI.pm par l'ancien corrige le problème sur toutes les plateformes et IIS7.5 lance correctement l'application Catalyst en mode fastcgi (bon j'ai maintenant une boucle de redirection mais ça c'est un autre problème ).

    Il n'y a pas de numéro de version associé à Plack::Handler::FCGI donc difficile de savoit à partir de quand ce changement interviens. Il est en tout cas présent dans la version 0.9985 de Plack qui est actuellement distribuée via ppm par ActiveState.

    Reste à savoir si c'est une coquille dans Plack ou si c'est une nouvelle façon d'interagir avec Fastcgi qui n'a pas été prise en compte dans Catalyst (le même problème apparait en jouant l'exemple 'Hello' du tutorial Catalyst).

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

Discussions similaires

  1. Paint bug sous windows 7 (effacement d'image)
    Par tanaka59 dans le forum Windows 7
    Réponses: 3
    Dernier message: 21/04/2012, 13h03
  2. "QOCI not loaded" sous Windows x64
    Par mercure07 dans le forum Bases de données
    Réponses: 0
    Dernier message: 22/03/2012, 08h23
  3. Bug sous windows 7
    Par heaven24 dans le forum Outils
    Réponses: 0
    Dernier message: 14/03/2012, 10h45
  4. bug chgnt mot de passe sous windows / PDC Smb
    Par jluc83 dans le forum Administration système
    Réponses: 0
    Dernier message: 14/09/2007, 18h23
  5. bug à la connexion internet sous Windows xp (erreur 0x001405f3)
    Par adrienj dans le forum Dépannage et Assistance
    Réponses: 3
    Dernier message: 11/05/2006, 01h24

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