Problème doctype flux RSS.

yann123
WRInaute discret
WRInaute discret
 
Messages: 131
Inscription: 11 Avr 2005

Problème doctype flux RSS.

Message le Jeu Déc 24, 2009 12:32

Bonjour,

Je viens de créer mon premier flux RSS.
Il est créé en php avec une mise en cache.
En local avec wamp tout marche bien.

Par contre en production, j'ai un bug:
La première fois que j'ouvre mon flux, il s'affiche correctement et crée le cache (normal).
Par contre quand je l'ouvre une deuxième fois, il va chercher le cache et m'affiche ce message d'erreur "Parse error: syntax error, unexpected T_STRING in ******* on line 1"
La ligne 1 contient:

Code: Tout sélectionner
<?xml version="1.0" encoding="utf-8"?>


Je la crée tout simplement comme ceci:

Code: Tout sélectionner
echo '<?xml version="1.0" encoding="utf-8"?>'."\n";


Je ne vois pas ce qui ne va pas.
Si j'enlève cette ligne, il ouvre le cache et affiche le flux correctement.

Qu'est ce qui ne va pas dans cette ligne?

Merci d'avance.


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Re: Problème doctype flux RSS.

Message le Jeu Déc 24, 2009 13:29

Salut,
Essaye comme ça :
Code: Tout sélectionner
echo "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";


Julia41
WRInaute passionné
WRInaute passionné
 
Messages: 1765
Inscription: 31 Aoû 2007

Re: Problème doctype flux RSS.

Message le Jeu Déc 24, 2009 14:09

Ton fichier commence bien par
Code: Tout sélectionner
<?php
? Car si c'est la ligne un il manque quelque chose et dans le cas où tu aurais short tag sur ON, la première occurrence de <? serait ton xml.

yann123
WRInaute discret
WRInaute discret
 
Messages: 131
Inscription: 11 Avr 2005

Re: Problème doctype flux RSS.

Message le Jeu Déc 24, 2009 15:08

tryan a écrit:Salut,
Essaye comme ça :
Code: Tout sélectionner
echo "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";

Merci, mais ça ne change rien.
Le premier affichage fonctionne et ensuite quand il va chercher le cache ça marche plus.

yann123
WRInaute discret
WRInaute discret
 
Messages: 131
Inscription: 11 Avr 2005

Re: Problème doctype flux RSS.

Message le Jeu Déc 24, 2009 15:13

Julia41 a écrit:Ton fichier commence bien par
Code: Tout sélectionner
<?php
? Car si c'est la ligne un il manque quelque chose et dans le cas où tu aurais short tag sur ON, la première occurrence de <? serait ton xml.


Mon fichier php commence bien par:
Code: Tout sélectionner
<?php


Mais je ne pense pas que cela vienne de mon php, puisqu'au premier lancement ca marche.
C'est quand il va chercher le cache qu'il plante.

Mon cache commence comme cela:
Code: Tout sélectionner
<?xml version="1.0" encoding="utf-8"?>
  <rss version="2.0">
   <channel>

Cela me parait bon, non ?


Julia41
WRInaute passionné
WRInaute passionné
 
Messages: 1765
Inscription: 31 Aoû 2007

Re: Problème doctype flux RSS.

Message le Jeu Déc 24, 2009 15:32

Cela me parait bon, ton cache doit alors être "mal" récupéré, sans ton code de cache, je ne peux pas t'en dire plus.


seebz
WRInaute impliqué
WRInaute impliqué
 
Messages: 808
Inscription: 15 Avr 2007

Re: Problème doctype flux RSS.

Message le Jeu Déc 24, 2009 15:51

Essaye avec readfile() ou file_get_contents() plutot que include()

yann123
WRInaute discret
WRInaute discret
 
Messages: 131
Inscription: 11 Avr 2005

Re: Problème doctype flux RSS.

Message le Jeu Déc 24, 2009 16:02

Voici une partie du code php qui crée le flux et la mise en cache:
Code: Tout sélectionner
<?php
//Debut de la mise en cache
$urldemandee=$_SERVER['REQUEST_URI'];
$urldemandee = ereg_replace('/','-',$urldemandee);
if($urldemandee=="-") $urldemandee="index.html";
$fichierCache="cache/".$urldemandee;
if (@filemtime($fichierCache)<time()-(3600*24*1)) {
   ob_start();
//Fin du debut du cache

echo "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";
echo '<rss version="2.0">'."\n";
    echo '<channel>'."\n";
    .......
    .......
     ect


//Fin du cache
$contenuCache = ob_get_contents();
   ob_end_flush();
   $fd = fopen("$fichierCache", "w");
   if ($fd) {
     fwrite($fd,$contenuCache);
     fclose($fd);
    }
} else {
  include ($fichierCache);
}
?>


Voyez-vous quelque chose d'anormal ?
Ma mise en cache fonctionne bien pour tous le reste du site.
Ce qui est bizarre c'est que pour le rss ca marche bien sous wamp et pas en production!


Julia41
WRInaute passionné
WRInaute passionné
 
Messages: 1765
Inscription: 31 Aoû 2007

Re: Problème doctype flux RSS.

Message le Jeu Déc 24, 2009 18:18

Code: Tout sélectionner
if (@filemtime($fichierCache)<time()-(3600*24*1)) {
   ob_start();
//Fin du debut du cache

echo "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";


Voilà à rempalcer par :
Code: Tout sélectionner
if (@filemtime($fichierCache)<time()-(3600*24*1)) {
   ob_start();
}
//Fin du debut du cache

echo "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";


Julia41
WRInaute passionné
WRInaute passionné
 
Messages: 1765
Inscription: 31 Aoû 2007

Re: Problème doctype flux RSS.

Message le Jeu Déc 24, 2009 18:19

Double post pour dire Joyeux Noel en passant ;)


seebz
WRInaute impliqué
WRInaute impliqué
 
Messages: 808
Inscription: 15 Avr 2007

Re: Problème doctype flux RSS.

Message le Ven Déc 25, 2009 20:29

seebz a écrit:Essaye avec readfile() ou file_get_contents() plutot que include()
:roll:

yann123
WRInaute discret
WRInaute discret
 
Messages: 131
Inscription: 11 Avr 2005

Re: Problème doctype flux RSS.

Message le Lun Déc 28, 2009 22:48

Julia41 a écrit:
Code: Tout sélectionner
if (@filemtime($fichierCache)<time()-(3600*24*1)) {
   ob_start();
//Fin du debut du cache

echo "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";


Voilà à rempalcer par :
Code: Tout sélectionner
if (@filemtime($fichierCache)<time()-(3600*24*1)) {
   ob_start();
}
//Fin du debut du cache

echo "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";


Ben non, Cette condition doit-être fermé aprés création du cache donc à la fin.

yann123
WRInaute discret
WRInaute discret
 
Messages: 131
Inscription: 11 Avr 2005

Re: Problème doctype flux RSS.

Message le Lun Déc 28, 2009 22:49

Julia41 a écrit:Double post pour dire Joyeux Noel en passant ;)

Joyeuses fêtes de fin d'années à vous tous également.

yann123
WRInaute discret
WRInaute discret
 
Messages: 131
Inscription: 11 Avr 2005

[Résolu]: Problème doctype flux RSS.

Message le Lun Déc 28, 2009 22:51

seebz a écrit:
seebz a écrit:Essaye avec readfile() ou file_get_contents() plutot que include()
:roll:


Avec file_get_contents() j'obtiens une page blanche.
Avec readfile() ça marche nickel en local comme en production.
Merci à tous pour vos réponses.

Kolibot
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 15
Inscription: 11 Juin 2009

Re: Problème doctype flux RSS.

Message le Mar Déc 29, 2009 12:07

N'oublie pas :

if(strpos($_SERVER['HTTP_USER_AGENT'],'MSIE')!==false){
header('Content-Type:text/xml');
}else{
header('Content-Type:application/rss+xml');
}

Si tu veux que ça soit parfait :D


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités