Sujet : Erreur FastCGI Windows

Salut Hywan , je te détail ici mon processus pour essayer de faire fonctionner Bhoa sous windows xD

Alors j'ouvre une console pour php-cgi

C:\Users\Julien\Desktop\php-5.3.8-nts-Win32-VC9-x86>php-cgi -v
PHP 5.3.8 (cgi-fcgi) (built: Aug 23 2011 12:14:38)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies

C:\Users\Julien\Desktop\php-5.3.8-nts-Win32-VC9-x86>php-cgi -b 127.0.0.1:9000

Un seconde console :

C:\Users\Julien\Desktop\php-5.3.8-nts-Win32-VC9-x86>php -v
PHP 5.3.8 (cli) (built: Aug 23 2011 12:14:39)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies

C:\Users\Julien\Desktop\php-5.3.8-nts-Win32-VC9-x86>php C:\wamp\www\Cxp\Data\Bin
\Hoa.php
                                       Hoa

Welcome in the command-line interface of Hoa :).

List of available commands

Main
    welcome       This homepage.
    version       The framework version and revision.
    tree          Print contents of a directory.
    uuid          Generate an universally unique identifier.
    debugger      Start the debugger client.
    bhoa          Start a damn stupid HTTP server.
    pp            Compile a language with a grammar in PP.
Protocol
    resolve       Resolve a hoa:// URI.
    tree          Print the whole hoa:// protocol as a tree.
Documentation
    php           About PHP functions, classes, extensions etc.
Test
    initialize    Initialize a new test revision.
    run           Run a test revision.
    remove        Remove a test revision.
    praspel       Interactive Praspel shell.
Worker
    start         Start a worker.
    stop          Stop a worker.
    status        About worker PID, uptime, memory etc.


C:\Users\Julien\Desktop\php-5.3.8-nts-Win32-VC9-x86>php -v
PHP 5.3.8 (cli) (built: Aug 23 2011 12:14:39)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies

C:\Users\Julien\Desktop\php-5.3.8-nts-Win32-VC9-x86>php C:\wamp\www\Cxp\Data\Bin
\Hoa.php bhoa -r hoa://Application/Public/
Server is up, on tcp://127.0.0.1:8888!
Root: hoa://Application/Public/.

Waiting for connection

J'accède a l'url http://localhost:8888/ => page vide
avec la réponse dans la console N°2 :

:\Users\Julien\Desktop\php-5.3.8-nts-Win32-VC9-x86>php C:\wamp\www\Cxp\Data\Bin
Hoa.php bhoa -r hoa://Application/Public/
erver is up, on tcp://127.0.0.1:8888!
oot: hoa://Application/Public/.


å? GET / (waitingÔǪ)   Uncaught exception (Hoa\FastCgi\Exception\Exception):
oa\FastCgi\Responder::send(): (0) Bad request (not a well-formed FastCGI reques
).
n C:\wamp\www\Hoa\Central\Library\FastCgi\Responder.php at line 249.
:\Users\Julien\Desktop\php-5.3.8-nts-Win32-VC9-x86>

Je sais bien que tu as déja vu ces codes erreurs ^^ mais bon smile la version de php est fraichement dézippé en direct de windows.php.net ^^

Cdt Hawk

Dernière fois dit par thehawk (29 Sep. 2011 07:24)

Apprend Hoa et est heureux smile

2

Re : Erreur FastCGI Windows

Hello,

J'aimerais que tu modifies tout d'abord le titre de ce sujet pour qu'il soit plus explicite.
Ensuite, l'objectif n'est pas de faire fonctionner Bhoa sous Windows car il y fonctionne déjà, mais de trouver d'où vient cette erreur avec FastCGI.

Voici le processus : ton navigateur envoie une requête HTTP à un serveur (ici ???), qui va envoyer une requête FastCGI à PHP (ici PHP-CGI), qui va exécuter du code PHP (ici avec PHP). J'ai bien mis « ??? » car ce n'est pas WAMP dans notre cas mais bien Bhoa. Autrement dit : navigateur --(http)--> Bhoa --(FastCGI)--> PHP-CGI --> PHP. Ici, le passage du navigateur à Bhoa se fait comme il faut. Bhoa prépare une requête FastCGI qu'il envoie à PHP-CGI et il attend sa réponse. L'envoie se passe bien mais c'est la lecture de la réponse qui se passe mal. Pourquoi (je lis le code en même temps pour dérouler le fonctionnement) ? Parce qu'il n'arrive pas à lire 8 bytes sur la socket. Hmm. Sauf que la lecture de la socket ne peut jamais renvoyer false, toujours une chaîne de caractères. Étrange.

Est-ce que tu peux modifier le code pour voir ? Car ce n'est pas normal ce qu'il se passe. Et je ne me suis jamais rendu compte que mes prédicats sont même impossibles. S'ils sont vrais, c'est qu'il y a une erreur que je ne comprends pas. Alors voici quoi faire : dans Library/FastCgi/Responder.php, ligne 329, tu changes le contenu de la méthode pour :

$out = $this->getClient()->read($length);
var_dump($out);
return $out;

J'aimerais savoir ce que $out vaut. Il sera appelé plusieurs fois j'imagine, la dernière valeur nous intéresse je pense (mais donne les toutes smile).

Aller, on y croit wink. Réparer un protocole à distance sur un OS que je ne connais pas, même pas peur …

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

3

Re : Erreur FastCGI Windows

Voila je viens de modifier la ligne et j'obtient :


C:\Users\Julien\Desktop>"C:\Users\Julien\Desktop\php-5.3.8-nts-Win32-VC9-x86\php
.exe" "C:\wamp\www\Cxp\Data\Bin\Hoa.php" bhoa -r hoa://Application/Public/
Server is up, on tcp://127.0.0.1:8888!
Root: hoa://Application/Public/.


Ô£ö GET /favicon.ico
Ôå? GET / (waitingÔǪ)        bool(false)
Uncaught exception (Hoa\FastCgi\Exception\Exception):
Hoa\FastCgi\Responder::send(): (0) Bad request (not a well-formed FastCGI reques
t).
in C:\wamp\www\Hoa\Central\Library\FastCgi\Responder.php at line 249.
C:\Users\Julien\Desktop>pause
Appuyez sur une touche pour continuer...

et en rajoutant un var_dump($length);

j'obtiens :

 C:\Users\Julien\Desktop>"C:\Users\Julien\Desktop\php-5.3.8-nts-Win32-VC9-x86\php
.exe" "C:\wamp\www\Cxp\Data\Bin\Hoa.php" bhoa -r hoa://Application/Public/
Server is up, on tcp://127.0.0.1:8888!
Root: hoa://Application/Public/.


Ôå? GET / (waitingÔǪ)   int(8)
bool(false)
Uncaught exception (Hoa\FastCgi\Exception\Exception):
Hoa\FastCgi\Responder::send(): (0) Bad request (not a well-formed FastCGI reques
t).
in C:\wamp\www\Hoa\Central\Library\FastCgi\Responder.php at line 249.
Apprend Hoa et est heureux smile

4

Re : Erreur FastCGI Windows

J'ai fait remonté le bug dans la mailing-list pour espérer un patch dans PHP5.4 : http://news.php.net/php.internals/557895. On attend smile.

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

5

Re : Erreur FastCGI Windows

Le lien est mort :-(

6

Re : Erreur FastCGI Windows

http://news.php.net/php.internals/55789

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

7

Re : Erreur FastCGI Windows

Ok, il y a du mieux. Voici la discussion : https://bugs.php.net/55814 (en bas). Étrangement, Windows a changé le comportement de son ordonnancement de sockets, chouette …
Je propose que tu fasses un truc, super facile, histoire de voir si ça résoud le problème : ligne 218 dans Hoa\FastCgi\Responder, tu ajoutes :

$client->setStreamBlocking(true);

(la méthode est située dans Hoa\Stream si tu veux y jeter un œil). Ce ne sera pas du tout le patch final ! Il sera plus compliqué, mais c'est pour tester sur Bhoa directement.

Plus simple sinon, tu reprends l'exemple du bug en mettant :

<?php
 
$client = stream_socket_client(
    'tcp://127.0.0.1:9001',
    $errno,
    $errstr,
    30,
    STREAM_CLIENT_CONNECT
);
echo 'Received ';
stream_set_blocking($client, true);
var_dump(stream_socket_recvfrom($client, 6));

Le serveur reste le même.

Merci de tester tout ça sur Windows7 smile. On croise les doigts.

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

8

Re : Erreur FastCGI Windows

Ca marche smile big_smile bon bhoa ne veut pas de Hoa\Session mais c'est pas génant cela fonctionne big_smile merci hywan big_smile

Apprend Hoa et est heureux smile

9

Re : Erreur FastCGI Windows

Oui, Bhoa c'est qu'un brouillon utile pour démarrer rapidement. Il est largement améliorable wink. Je vais faire un patch plus correct.

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

10

Re : Erreur FastCGI Windows

Voici le patch 0a3b21ed646a qui devrait résoudre ce problème. Tu valides ?

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »