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

IIS Discussion :

Pb Redirection avec Zend Core 2.5 / FastCGI / IIS 6.0


Sujet :

IIS

  1. #1
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 16
    Points
    16
    Par défaut Pb Redirection avec Zend Core 2.5 / FastCGI / IIS 6.0
    Bonjour à tous ,

    Ca fait quelques jours que je suis bloqué sur un pb ...

    Voilà, dans le cadre d'un projet, je dois développer une application web en PHP sous IIS 6.0 (Windows 2003 server enterprise edition SP2).

    Pourquoi IIS ? tout simplement que la machine héberge une application fonctionnant sous IIS et que de toutes façons le client ne souhaite pas changer.
    Je n'ai donc pas le choix, sinon j'aurais choisi Apache, évidemment.

    Après un peu de doc, j'installe Zend Core qui embarque tout l'attirail pour faire tourner du PHP sous IIS 6.0 (FastCGI, PHP, etc ...).

    Les extensions ".php" sont correctement interprétées avec IIS.

    Le framework de Zend a besoin de la réécriture d'url pour fonctionner son moteur MVC. J'ai donc installé ISAPI Rewrite 3.0 avec la règle suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteEngine on
    RewriteRule !\.(js|ico|gif|jpg|png|css|PNG|pdf|doc|PDF|DOC)$ /index.php
    Là où ça pose pb, c'est lorsque j'appelle une url du style:
    http://localhost/auth/login je reste bloqué sur la page du controlleur par défaut (IndexController avec son action indexAction) alors que je devrais être redirigé vers le Controller nommé 'AuthController' avec l'action 'loginAction' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    class AuthController extends Zend_Controller_Action
    {
        function loginAction ()
        {
            // mon code
        }
    }
    Et je n'arrive pas du tout à voir d'où cela peut venir ...
    Pouvez-vous me filer un (bon) tuyau ?
    Merci !

  2. #2
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    Je ne connais pas IIS, donc je ne peux pas résoudre directement ton problème, mais je vais essayer de te donner des pistes...

    Si tu obtiens toujours le contrôleur par défaut, c'est que la réécriture s'est bien faite (la requête est bien redirigée vers index.php), mais que le framework n'arrive pas à déterminer la route...

    Je crois que par défaut, le framework utilise les données de la variable globale $_SERVER pour identifier la route.

    Peux tu mettre dans ton index.php le code suivant pour débugguer, et nous dire ce qu'il en ressort avec l'adresse http://localhost/auth/login :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    echo '<pre>';
    echo 'HTTP_X_REWRITE_URL : ';
    var_dump($_SERVER['HTTP_X_REWRITE_URL']);
    echo 'REQUEST_URI : ';
    var_dump($_SERVER['REQUEST_URI']);
    echo 'ORIG_PATH_INFO : ';
    var_dump($_SERVER['ORIG_PATH_INFO']);
    echo 'QUERY_STRING : ';
    var_dump($_SERVER['QUERY_STRING']);
    echo '</pre>';

  3. #3
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    Bonsoir,

    Voilà le résultat du script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    HTTP_X_REWRITE_URL : string(10) "/index.php"
    REQUEST_URI : string(10) "/index.php"
    ORIG_PATH_INFO : string(10) "/index.php"
    QUERY_STRING :
    J'ai dû commenter la QUERY_STRING qui me faisait un timeout sur le serveur.
    pourquoi je ne sais pas ...

  4. #4
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    C'est ce que je craignais...

    Avec apache, HTTP_X_REWRITE_URL n'est pas défini et REQUEST_URI vaut "/auth/login", ce qui permet au framework d'en déduire le contrôleur et l'action.

    Le problème vient donc du mode de redirection qui fait "perdre" les informations envoyées par le navigateur.

    Si tu fais un var_dump($_SERVER), est-ce qu'il y a un index qui contient la requête (auth/login) ? Si oui, tu peux essayer de passer cette information à la méthode dispatch du contrôleur frontal...

  5. #5
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    En fait non voilà texto (à la mise en page prêt ...) ce que j'obtiens avec le vardump:

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    array(49) { ["ZendEnablerConfig"]=> string(43) "C:\Program Files\Zend\Core\etc\fastcgi.conf" 
    ["PHP_FCGI_MAX_REQUESTS"]=> string(5) "10000" 
    ["PHP_FCGI_CHILDREN"]=> string(1) "1" 
    ["PATH"]=> string(240) "C:\Program Files\SlikSvn\bin;C:\java\apache-maven-2.0.9\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\SlikSvn\bin\;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Zend\Core\bin;C:\Program Files\Zend\Core\oic" 
    ["TEMP"]=> string(31) "C:\Program Files\Zend\Core\temp" 
    ["OS"]=> string(10) "Windows_NT" 
    ["SystemRoot"]=> string(10) "C:\WINDOWS" 
    ["ComSpec"]=> string(27) "C:\WINDOWS\system32\cmd.exe" 
    ["_FCGI_MUTEX_"]=> string(3) "648" 
    ["_FCGI_SHUTDOWN_EVENT_"]=> string(3) "644" 
    ["_FCGI_NTAUTH_IMPERSONATE_"]=> string(1) "1" 
    ["FCGI_ROLE"]=> string(9) "RESPONDER" 
    ["HTTP_CACHE_CONTROL"]=> string(8) "no-cache" 
    ["HTTP_CONNECTION"]=> string(10) "Keep-Alive" 
    ["HTTP_ACCEPT"]=> string(3) "*/*" 
    ["HTTP_ACCEPT_ENCODING"]=> string(13) "gzip, deflate" 
    ["HTTP_ACCEPT_LANGUAGE"]=> string(2) "fr" 
    ["HTTP_COOKIE"]=> string(60) "AUTORITE NT\SERVICE RÉSEAU=ExpandRow¤ReloadTask=ReloadTask" 
    ["HTTP_HOST"]=> string(9) "localhost" 
    ["HTTP_USER_AGENT"]=> string(94) "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)" 
    ["HTTP_UA_CPU"]=> string(3) "x86" 
    ["HTTP_X_REWRITE_URL"]=> string(10) "/index.php" 
    ["APPL_MD_PATH"]=> string(16) "/LM/W3SVC/1/Root" 
    ["APPL_PHYSICAL_PATH"]=> string(13) "C:\rgpp\html\" 
    ["GATEWAY_INTERFACE"]=> string(7) "CGI/1.1" 
    ["HTTPS"]=> string(3) "off" 
    ["INSTANCE_ID"]=> string(1) "1" 
    ["INSTANCE_META_PATH"]=> string(11) "/LM/W3SVC/1" 
    ["REMOTE_ADDR"]=> string(9) "127.0.0.1" 
    ["REMOTE_HOST"]=> string(9) "127.0.0.1" 
    ["REMOTE_PORT"]=> string(4) "2511" 
    ["SCRIPT_NAME"]=> string(10) "/index.php" 
    ["SERVER_NAME"]=> string(9) "localhost" 
    ["SERVER_PORT"]=> string(2) "80" 
    ["SERVER_PORT_SECURE"]=> string(1) "0" 
    ["SERVER_PROTOCOL"]=> string(8) "HTTP/1.1" 
    ["SERVER_SOFTWARE"]=> string(17) "Microsoft-IIS/6.0" 
    ["URL"]=> string(10) "/index.php" 
    ["SCRIPT_FILENAME"]=> string(22) "C:\rgpp\html\index.php" 
    ["REQUEST_METHOD"]=> string(3) "GET" 
    ["PATH_TRANSLATED"]=> string(22) "C:\rgpp\html\index.php" 
    ["CONTENT_LENGTH"]=> string(1) "0" 
    ["REQUEST_URI"]=> string(10) "/index.php" 
    ["DOCUMENT_ROOT"]=> string(13) "C:\rgpp\html\" 
    ["ORIG_PATH_INFO"]=> string(10) "/index.php" 
    ["PHP_SELF"]=> string(10) "/index.php" 
    ["REQUEST_TIME"]=> int(1225440525) 
    ["argv"]=> array(0) { } 
    ["argc"]=> int(0) }
    De mon coté j'ai des doutes concernant la conf IIS et les règles de réécriture ISAPI_Rewrite.

    Est-ce que c'est normal si je dois mettre "\" avant index.php dans ma règle d'écriture? Tous les exemples de codes que j'ai pu trouver sur le net sont sans le "\"...

    Voici exactement mon fichier httpd.conf :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # Helicon ISAPI_Rewrite configuration file
    # Version 3.1.0.35
    RewriteEngine on
    RewriteRule !\.(js|ico|gif|jpg|png|css|swf|PNG|pdf|doc|PDF|DOC)$ /index.php
    Je suis un peu perdu et je ne sais vraiment plus dans quelle direction chercher pour résoudre ce fichu pb ...

  6. #6
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Malheureusement, ne connaissant pas bien IIS ni ISAPI Rewrite 3.0, je ne sais pas comment faire passer l'information de l'adresse de la requête au script php.

    Je ne sais pas si ça peut t'aider, mais si tu rediriges l'adresse http://localhost/auth/login vers http://localhost/index.php/auth/login, je crois que la route pourra être déterminée par le framework.

Discussions similaires

  1. Pb Redirection avec Zend Core 2.5 / FastCGI / IIS 6.0
    Par Adau72 dans le forum Zend Framework
    Réponses: 4
    Dernier message: 31/10/2008, 09h17
  2. Réponses: 1
    Dernier message: 27/10/2008, 18h08
  3. CGI / FastCGI erreur depuis Zend Core
    Par nighma dans le forum Zend
    Réponses: 15
    Dernier message: 27/11/2007, 12h29
  4. Réponses: 5
    Dernier message: 22/05/2007, 14h27
  5. Erreur du php-cgi.exe avec installation de Zend Core
    Par __fabrice dans le forum Zend Studio
    Réponses: 11
    Dernier message: 15/04/2007, 14h55

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