|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 699 ![]() |
Salut à tous
Je pensais il y a maintenant longtemps de ça résoudre ce même problème, faut croire que non. Dans le genre bug incompréhensible, et bien j'ai jamais eu pire, alors pour l'expliquer ça ne va pas être simple. J'ai tenté de réduire la situation de la manière la plus basique possible, soit une banale page HTML : Code :
Dès que j'enlève ce contenu avant le <html>, plus du tout de bug. Si je mets des URLs absolues et complètes (genre : -http://..../run.jpg) aucun problème. En résumer : un contenu avant <html> + des URLs relatives de contenu importés provoque le bug. Pour exemple, la requête HTTP pour rechercher run.jpg serait : -http://127.0.0.1/run/images C'est tout ??? Il manque le reste : run.jpg Pourquoi donc le navigateur envoie t-il des URLs partielles ??? Si je supprime le cache, cookie, etc ... du navigateur, alors plus de bug du tout. Va comprendre pourquoi ? Dès que je clique sur le lien, alors ça bug à nouveau, c'est systématique. ![]() Quand je réactualise la page, pareil, ça bug. Le pire, c'est que j'ai un autre projet quasi similaire, et je n'est pas du tout ce bug, je ne parviens même pas à le provoquer. A savoir que ce bug ce fait sur FF, IE, mais pas sur Chrome. Et pour le moment, tout ce fait uniquement en local sur XP. Là où je n'est pas d'explication aussi, c'est que sur FF les images sont quand même visibles (alors que les requêtes HTTP semblent erronées), mais sur IE elle ne le sont pas (des croix). Tout porte à croire que c'est du coté navigateur que ça bug, mais ça en concerne au moins 2, et les plus utilisés. De plus, pourquoi n'ai je pas ce bug dans l'autre projet dont le code est similaire ? J'ai fais des tonnes d'essais ce week end, j'vous dis pas combien. J'y comprends franchement rien à ce truc La seule manière de ne plus avoir ce bug, c'est de mettre des URLs absolues est complètes à toutes les images, import JS, etc ..., ce qui ne me satisfait pas du tout. Si vous avez une piste, des explications, alors là,
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
||
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 699 ![]() |
Je rajoute 2 informations, sait on jamais si ce serait lié.
J'ai de la réécriture, et le .htaccess est comme ceci : Citation:
Apparemment ce n'est pas le cas car pour exemple de l'image run.jpg j'obtiens l'erreur suivante : Citation:
Je ne vois pas d'autres explications, mais je ne vois pas comment résoudre ça. Puis en appliquant la fonction apache_request_headers() pour voir ce qu'il y a coté entête, j'ai entre autre : [Cache-Control] => max-age=0 Je n'est pas ça avec le projet qui ne bug pas. Pourquoi 0 d'ailleurs, il me semble n'avoir rien défini à ce niveau. Il y a peut être matière à exploiter ici, mais là encore je ne vois pas. Toujours à la recherche du bug indéboggable
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
||
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Inscription : avril 2006 Messages : 1 338 ![]() |
Je comprends pas trop le but d'inserer du code html ici..
__________________
Stay in Bed .. Save Energy |
|
|
00
|
|
|
#4 | |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 699 ![]() |
Citation:
Il me parais donc plus pratique de faire ça à l'endroit même où j'interviens, comme dans une classe par exemple qui elle est déclarée avant que le HTML soit généré, donc avant le DOCTYPE. Les conséquences sont cependant dramatiques, car dans cet exemple, il n'y a que 2 images, mais dans la réalité, c'est largement plus, et ça provoque tellement d'erreurs que ça en devient ingérable. Tout ça à cause d'un banal echo qui se voulait un moyen de débug, le comble finalement. ![]() Ceci ne doit pas provoquer de telles erreurs, c'est pas possible cette histoire, mais je ne sais pas pourquoi.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
|
00
|
|
|
#5 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
J'ai rencontré un problème du même genre en faisant générer mes pages avec les classes DOM de PHP5 et en les faisant parser par une XSLT avant la sortie (ce qui me permet en outre de sortir le contenu sous plusieurs formats pour les mêmes vues).
J'ai solutionné le problème de la façon suivante: je me suis créé une classe capable d'attraper les erreurs natives de PHP sur le modèle d'un Observer (ça tombe bien, SPL fournit tous les prototypes nécéssaires). Ainsi, en étendant les fonctionalités de la fonction trigger_error, je me suis créé des fonctions de trace capable de se dispatcher sur la page à un endroit connu et/ou sur fichier (ce qui permet de faire des logs et du monitoring à l'execution des scripts). En prime, j'ai gagné la possibilité de récupérer le contexte autours de mes erreurs (et d'enrichir ces contextes avec xdebug qui fournit notamment toute la callstack) ce qui me fournit des logs carrément explicites. Dans un projet de grande envergure, ce genre d'outils m'est apparu incontournable. |
|
00
|
|
|
#6 | |
|
Membre Expert
![]() Inscription : avril 2006 Messages : 1 338 ![]() |
Si on suit tes pistes :
Citation:
__________________
Stay in Bed .. Save Energy |
|
|
|
00
|
|
|
#7 | |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 699 ![]() |
Je suis actuellement en train de prospecter du coté FireBug, il y a vraiment des trucs bizarres :
Citation:
Ils sont dans le même répertoire, leur liens sont identiques. Pourquoi donc une 2ème requête HTTP pour le reso_ecran.js, dont la 1ère échoue et pas la 2ème ? Pour les 2 images, les 2 requêtes HTTP échoues, aucune 2ème tentative cette fois. Ici, c'est quand je clique sur le lien. Si j'actualise la page, tout est quasi doublé, en gros, ça rechercherait une 1ère fois les JS et images dans le cache (du moins apparemment), et là, c'est Ok (304 Not Modified). Puis ça lance des requêtes HTTP, normal, j'actualise, et comme d'hab, des erreur 404 Not Found. Je n'arrive pas à comprendre toutes ces incohérences, juste pour une histoire de contenu mal placé, même volontairement. Les URLs sont bonnes, c'est une certitude, aussi bien pour les JS que les images. Encore une fois, sur l'autre projet j'y met volontairement un contenu mal placé, pour tester justement, ce n'est pas pour autant que les éléments de la page (JS, images) ne sont pas récupérés. Plus je cherche, moins j'comprends. ![]() C'est la déprime
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 699 ![]() |
Pour encore apporter de l'eau au moulin (pour mieux me noyer tiens
FireBug confirme en quelque sorte que les requêtes HTTP ne sont pas correctes. Je prends pour exemple les 2 reso_ecran.js, qui bizarrement se lancent 2 fois. Celle qui est correcte : GET /run/js/reso_ecran.js HTTP/1.1 Host: 127.0.0.1 Et celle incorrecte : GET /run/entree/js/reso_ecran.js HTTP/1.1 Host: 127.0.0.1 Le navigateur rajoute dans l'URL entree/ ??? Va savoir pourquoi ??? J'insiste, sait on jamais. Dès que je supprime le contenu avant le <html>, plus du tout de bug. Ou alors, si j'utilise des URLs absolue et complètes plus de bug aussi. Comment un truc pareil, aussi bateau peut il déboussoler un navigateur à ce point
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
00
|
|
|
#9 |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 699 ![]() |
![]() Je crois que là, j'ai peut être une solution, sinon LA solution. Le truc viendrait de l'URL de départ, des liens en général qui sont lié à la réécriture, de ma façon de faire, qui est très récente (modifié il y a peu). Un lien actuellement est fait comme ceci : -http://127.0.0.1/run/entree/index Donc sans de slash à la fin. Et bien si je rajoute un slash ... plus de bug J'le crois pas, mais ça fait pas un pli : (donc avec le contenu mal placé avant <html>) -> avec un slash à la fin, tout fonctionne bien : -http://127.0.0.1/run/entree/index/ -> sans le slash : bug ![]() Moralité : Faire gaffe à la réécriture, ne faites pas du n'importe quoi. Si certain on une explication du pourquoi du comment de ce slash à la noix
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com