Flux RSS marche en local, mais ne marche pas en ligne.

Le problème exposé dans ce sujet a été résolu.

Bonjour, je viens demander de l'aide SVP, car la je bloque vraiment. Je viens de coder mon premier flux RSS, et je n'arrive pas à le faire marher en ligne. Alors qu'en local, avec wamp, il marche.

Voici mon code:

 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
<?php
require('head.php');       // session_start, utf8
header('Content-type: application/xml');
require('requires.php');

$article = new Article();
$page = new PageSpecifique();

// ** req SQL select pour récup données de la page d'accueil **
$data_accueil = $page->selectPageAccueil();

?>
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title><?php echo $data_accueil->title; ?></title>
        <link><?php echo URL_HOST; ?></link>
        <description><?php echo $data_accueil->description; ?></description>
        <language>fr</language>

        <?php
        // ** req SQL SELECT pour récup articles **
        $data_articles = $article->selectListeArticles('id DESC', NULL, NULL, NULL);
        foreach($data_articles as $data_article) { ?>
            <item>
                <title><?php echo $data_article->title; ?></title>
                <link><?php echo URL_HOST.$data_article->url; ?></link>
                <description><![CDATA[<?php echo $data_article->contenu; ?>]]></description>
                <pubDate><?php echo date('D, d m Y H:i:s', strtotime($data_article->date_publ)); ?> GMT</pubDate>
            </item>
        <?php } ?>
    </channel>
</rss>

J'ai l'impression que le problème viens du XML. Car si j'enlève toute les balises XML, en laissant que le PHP, en ligne ça marche. ps: voici le lien test que j'ai en ligne: http://www.creerwebsite.com/rss-articles

Merci beaucoup.

+0 -0

Si je supprime toute les balises XML (en laissant tout le PHP), ça fonctionne. Donc je ne pense pas que ce soit une erreur fatale PHP. J'ai essayé d'activer les erreur PHP avec ceci :

1
2
3
4
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
//error_reporting(E_ALL & ~E_NOTICE);

Mais rien ne s'affiche… Merci

Si ça doit en être une puisque ta page renvoie une 500.

J'ai essayé d'activer les erreur PHP avec ceci

Oui sauf qu'activer les erreurs au niveau du script ne saurait être effectif si le script contient une erreur de syntaxe par exemple. Il faut les activer à un niveau supérieur mais ça dépend de tes droits et de comment PHP fonctionne par rapport au serveur.

Tu ne peux pas modifier les entêtes après un session_start. Donc ton script doit planter sur la ligne header('Content-type: application/xml');.

De toute manière, l'entête correcte serait header('Content-Type: application/xml');.

+0 -0

As-tu essayé de passer le .ovhconfig (cf lien ci-dessus) en mode développement ?

Tu ne peux pas modifier les entêtes après un session_start.

Ah bon ? Et pourquoi donc ? Tout ce qui compte c'est qu'il n'y ait pas sortie avant l'une comme l'autre (et session_start n'émet que des entêtes, aucun contenu)

+0 -0

Tu ne peux pas modifier les entêtes après un session_start. Donc ton script doit planter sur la ligne header('Content-type: application/xml');.

De toute manière, l'entête correcte serait header('Content-Type: application/xml');.

Hugo

Merci, mais j'ai essayé ton code, et le mettre avant le session start. ça ne change rien.

Ok, peux-tu faire un phpinfo() et nous dire ce qu'il t'imprime?

artragis

Oui ok. Voici que qu'il me retourne : http://www.creerwebsite.com/php-info Merci

As-tu essayé de passer le .ovhconfig (cf lien ci-dessus) en mode développement ?

Tu ne peux pas modifier les entêtes après un session_start.

Ah bon ? Et pourquoi donc ? Tout ce qui compte c'est qu'il n'y ait pas sortie avant l'une comme l'autre (et session_start n'émet que des entêtes, aucun contenu)

vibrice

LE ovhconfig est est bien à la racine de mon site. voici son contenu:

1
2
3
4
5
6
7
# app.engine=phpcgi
# app.engine.version=AUTO

app.engine=php
app.engine.version=5.5
http.firewall=none
environment=production

merci

Salut !

Je parie que les "short_open_tags" sont activés, et que du coup, <?xml… pose problème. Il va te falloir mettre la déclaration XML dans un echo ou désactiver short_open_tag, si c'est possible – dans un .htaccess, tu peux mettre php_value short_open_tag 0.

Evite aussi de répondre deux fois de suite dans un sujet, merci

+2 -0

Salut !

Je parie que les "short_open_tags" sont activés, et que du coup, <?xml… pose problème. Il va te falloir mettre la déclaration XML dans un echo ou désactiver short_open_tag, si c'est possible – dans un .htaccess, tu peux mettre php_value short_open_tag 0.

Exact ! Merci beaucoup à tous.

Evite aussi de répondre deux fois de suite dans un sujet, merci

Ymox

Ok, la prochaine fois, je ré-éditerai ma dernière réponse au lieu de poster une nouvelle réponse.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte