La redirection d’application Zend ne fonctionne pas après la migration sous Windows avec IIS

Mon application est développée en utilisant Zend 1.11 qui fonctionnait bien sous Linux. Conformément à l’exigence, j’ai déplacé l’application vers Windows 7 qui utilise IIS 7, PHP 5.4.39, MSSQL Server 2012.

Le problème est que, après la soumission des identifiants de connexion, l’utilisateur n’est pas redirigé vers la page d’accueil mais rest sur la même page (de connexion). Après avoir débogué le code source, j’ai appris que l’utilisateur est authentifié à partir de la firebase database, mais lorsque l’utilisateur est redirigé vers le contrôleur d’index, il est renvoyé à la page de connexion. Aucune erreur n’est affichée par l’application, même le journal iis ne montre aucune erreur.

Je pensais que cela pourrait être le problème lié à la réécriture d’URL. J’ai donc installé le module “URL Rewrite” sur IIS et importé le fichier .htaccess pour obtenir des règles de réécriture d’URL équivalentes à append dans le fichier web.config, mais cela n’a pas fonctionné non plus.

Dans ma session d’application est en cours d’enregistrement dans la firebase database. Je ne peux pas le modifier pour être enregistré sur le serveur (fichier) car il s’agit d’une application existante. Mais la session est en cours d’écriture et de lecture dans / depuis la firebase database avec succès. Seule chose, je suppose que la raison pour laquelle cette session arrive à expiration lors de la redirection de page. Mais je ne sais pas comment résoudre ce problème.

Toute aide serait grandement appréciée.

modifier

Le cookie est généré comme décrit ci-dessous entrer la description de l'image ici

Suis-je absent en termes de configuration de cookies / session dans IIS? Quelle est la configuration idéale pour Session et Cookies dans php.ini lorsque vous utilisez le serveur Web IIS?

C’est le comportement correct à redirect vers la page de connexion lorsque votre cookie n’est pas reconnu. Il y a très probablement un problème lors de l’émission du cookie – une mauvaise configuration du domaine / chemin du cookie (avez-vous besoin de réécrire URL depuis IIS?)

La première étape pour dépanner la cause première est de déterminer si les en-têtes de connexion et de redirection sont présents et correctement envoyés au navigateur.

Vous devez sniffer / capturer le trafic http pour voir les en-têtes finaux (utilisez l’extension “Live HTTP Headers” pour chrome / firefox). Vous pouvez également publier ici un exemple des en-têtes de requête / réponse pour la méthode de connexion / post correspondante.

La séquence doit contenir un en-tête de réponse “Set-Cookie: PHPSESSID = ………”. Prenez note de la valeur du chemin de cookie / domaine. Ainsi que des en-têtes de redirection tels que “Location: / redirect / path”.

Si tout est configuré correctement, toutes les requêtes suivantes doivent contenir l’en-tête de requête “Cookie: PHPSESSID = …..”. Sinon, vous devez vérifier votre configuration IIS (réécriture / inversion de l’URL pour le domaine / chemin pour vous assurer que le cookie émis correspond aux demandes futures).

Pour configurer les règles de réécriture / inversion des URL d’IIS, voir http://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-20-configuration-reference#Setting_Response_Headers

Après avoir débogué les références source et web, j’ai appris que le problème était que les données de session n’étaient pas désérialisées par le moteur PHP et que c’était pour cette raison que la session n’était pas correctement construite. Par conséquent, l’utilisateur était redirigé vers la page de connexion.

La solution actuelle est donc fournie par PHP: le gestionnaire de session personnalisé se désérialise ne fonctionnant pas sous Windows