tontof / kriss_feed

A simple and smart (or stupid) feed reader
279 stars 52 forks source link

"Fatal Error XML" #431

Closed Chassegnouf closed 2 years ago

Chassegnouf commented 2 years ago

Bonjour,

J'ai installé Kriss Feed (8.11) sur un hébergement mutualisé de Gandi (Simple Host, PHP 7.4) depuis quelques années maintenant et je me heurte à un souci qui est en souffrance depuis pas mal de temps (impossible de dater ça). Je suis, entre autres, le flux de Sebsauvage mais depuis quelque temps, je ne recevais plus rien et obtenais une erreur sur un certificat non valide. Après enquête, ça ne venait pas de Sebsauvage mais de mon hébergement et la nécessité de redémarrer mon instance. Ce que j'ai fait.

J'ai désormais une autre erreur : "Fatal Error XML 70: Fatal Error XML 70: SYSTEM or PUBLIC, the URI is missing"

Au passage, j'obtiens d'autres messages d'erreurs pour d'autres sites :

Le site de la société scientifique de l'Aude me renvoit le message suivant "Fatal Error XML 77: Fatal Error XML 77: Premature end of data in tag html line 2"

Le flux du site Aquitaine online me renvoie le message suivant : "Fatal Error XML 1: Fatal Error XML 1: internal error: detected an error in element content"

et enfin le flux de Tontof me renvoie le même message que la SESA : "Fatal Error XML 77: Fatal Error XML 77: Premature end of data in tag html line 2"

Bon, j'ajoute que je ne suis pas un spécialiste de ce genre de choses : j'installe des CMS d'intérêt sur mon instance, je mets à jour quand j'en ai l'occasion (la plupart des CMS que j'utilise notifient le besoin de MAJ) et c'est tout. Les paramètres de réglage de mon hébergement sont ceux de base et voudrais-je les modifier que je n'ai pas les compétences pour le faire.

Avant de contacter le support de mon hébergeur, je voudrais savoir si le problème ne viendrait pas de Kriss Feed.

Merci de votre attention,

@+

Chassegnouf

tontof commented 2 years ago

Salut,

Après avoir fait une sauvegarde de ton dossier est-ce que tu pourrais essayer avec la version dev : https://raw.githubusercontent.com/tontof/kriss_feed/master/src/index.php pour voir si tu as les même messages d'erreur. Souvent l'erreur Fatal Error XML 77 correspond à un flux qui n'est pas un vrai flux RSS, j'imagine qu'il y a un problème côté serveur pour télécharger le flux. Tu peux essayer de supprimer le flux et de le réajouter ? Si le flux n'est pas un vrai flux RSS ça ne marchera pas. Je n'ai pas eu de problème de mon côté avec :

Tiens moi au courant

Chassegnouf commented 2 years ago

J'ai installé la version dev qui a corrigé d'autres bugs dont je n'avais pas parlé (timesout sur ça et ça) mais ceux cités plus haut persistent. J'ai supprimé les flux en question et essayé de les installer mais les erreurs empêchent leur ajout (Sebsauvage, ton flux, Aquitaineonline et la SESA).

tontof commented 2 years ago

Est-ce que tu as un accès console sur ton serveur mutualisé ? Est-ce que tu connais les versions de libxml / curl utilisées par PHP ? Tu as utilisé quel lien pour mon flux ? http://tontof.net/?rss ou https://tontof.net/?rss ? En essayant l'autre http ou https, est-ce que ça fonctionne ?

Chassegnouf commented 2 years ago

Oh purée, tu me poses de ces questions xD Je vais voir ce que je peux faire.

Pour ton flux, j'ai essayé les deux versions mais elles donnent la même erreur.

tontof commented 2 years ago

Pour avoir la réponse à mes questions sur libxml et curl il te suffit de créer un fichier phpinfo.php qui contient :

<?php
phpinfo();

Pour la console c'est pour éventuellement faire des tests.

tontof commented 2 years ago

Après il faut te rendre sur le fichier phpinfo.php depuis un navigateur et tu auras toutes les infos liées à ton environnement php. Il faudra chercher libxml pour avoir la version associée à libxml et cURL Information pour curl

Chassegnouf commented 2 years ago

Ca y est, j'ai trouvé ça, y a un panneau de contrôle par où accéder au PHP info.

Libxml 2.9.4 cURL 7.52.1

Ca te parle ?

tontof commented 2 years ago

Oui ce n'est pas vraiment à jour, mais je ne pense pas que ça explique le problème. Tu peux essayer d'ajouter le flux de mes commentaires : http://tontof.net/?rss=comments (et https) J'ai lu qu'a priori il y avait un accès ssh sur les hébergements Gandi Simple host, tu as trouvé ?

Chassegnouf commented 2 years ago

J'ai activé la console d'urgence, j'ai installé Putty et à partir de maintenant, plus encore qu'avant, je ne comprends pas ce que je fais, je suis dans un autre monde...

tontof commented 2 years ago

C'est déjà énorme d'avoir fait ça sans trop connaître. Tu veux qu'on fasse une partage d'écran pour que je vois si je peux trouver l'origine du problème ? si oui, il faut m'envoyer un mail à tontof sur free.fr et je t'enverrai un lien jit.si pour que je vois en direct

tontof commented 2 years ago

sinon il faudrait essayer par la console de voir ce que tu obtiens en utilisant curl, par exemple curl https://tontof.net/?rss

Chassegnouf commented 2 years ago

Je n'en suis pas là malheureusement : mon password ne semble pas reconnu... Je reviens une fois que j'ai résolu ce pépin -____-

tontof commented 2 years ago

Sans console avec un petit test dans un fichier test.php

<?php
function get_data($url) {
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_USERAGENT, 'test');
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

$returned_content = get_data("https://tontof.net/?rss");

libxml_clear_errors();
$prev = libxml_disable_entity_loader(true);
$dom = new DOMDocument();
$dom->loadXML($returned_content);
restore_error_handler();
libxml_disable_entity_loader($prev);

var_dump(libxml_get_last_error());

Est-ce que ça affiche la même erreur ?

Chassegnouf commented 2 years ago

Pour qui ne comprends pas, c'est comme si tu entonnais un rituel magique de divination ^^ (je me rassure en me disant que mes compétences doivent sembler aussi mystérieuses pour le quidam)

object(LibXMLError)#2 (6) { ["level"]=> int(3) ["code"]=> int(77) ["column"]=> int(1) ["message"]=> string(41) "Premature end of data in tag html line 2 " ["file"]=> string(0) "" ["line"]=> int(320) }

tontof commented 2 years ago

Avec ce code pour test.php attention de ne pas avoir un fichier qui s'appelle test.xml dans le dossier. Une fois appelé il faudrait regarder ce que contient le fichier test.xml

<?php
function get_data($url) {
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_USERAGENT, 'test');
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

$returned_content = get_data("https://tontof.net/?rss");

file_put_contents('./test.xml', $returned_content);
libxml_clear_errors();
$prev = libxml_disable_entity_loader(true);
$dom = new DOMDocument();
$dom->loadXML($returned_content);
restore_error_handler();
libxml_disable_entity_loader($prev);

var_dump(libxml_get_last_error());
Chassegnouf commented 2 years ago

Message d'erreur :

object(LibXMLError)#2 (6) { ["level"]=> int(3) ["code"]=> int(77) ["column"]=> int(1) ["message"]=> string(41) "Premature end of data in tag html line 2 " ["file"]=> string(0) "" ["line"]=> int(320) }

Le format .xml ne passe pas, je ruse :

test.xml.txt

tontof commented 2 years ago

oula c'est quoi ce fichier, on dirait des séquences génomiques, ça sort d'où... T'es sûr que c'est le bon fichier que tu as uploadé ?

Chassegnouf commented 2 years ago

LOL la boulette. Oui ce sont des séquences d'ADN : des amorces de qPCR pour détecter les différentes espèces et sous-espèces de Salmonelles. test.xml.txt

tontof commented 2 years ago

Alors pour l'explication de mon flux, c'est parce que mon hébergeur considère le tien comme spammeur/robot et le bloque. J'imagine qu'il en est de même pour les autres erreurs Fatal Error XML 77 est-ce que tu fais des mises à jour fréquentes des flux avec KrISS feed ?

Chassegnouf commented 2 years ago

Ben du coup, en ce moment oui à cause du bug. Sinon Kriss Feed est ma page d'accueil sur mon navigateur, il est donc ouvert régulièrement. Le delay maximum entre deux updates est de 60 min. La page est donc ouverte plusieurs fois par jour et, restant ouverte tout le temps, les feeds sont mis à jour toutes les 60 min. Ca ne me semblait pas fou-fou mais je pense que je peux doubler ça sans sourciller. En revanche, est-ce que c'est réversible... ?

tontof commented 2 years ago

Que voulais-tu dire par « la nécessité de redémarrer mon instance » ? Tu parlais de ton hébergement mutualisé ou de KrISS feed ? Est-ce que tu sais si cela t'a fait changer de serveur mutualisé ? Souvent c'est basé sur l'IP et les mutualisés posent souvent ce genre de problème. J'aurais tendance à penser qu'il faut attendre de voir si ça le fait sur la durée ou si c'est ponctuel. En essayant de limiter les mises à jour pour voir si ça change quelque chose ?

Chassegnouf commented 2 years ago

Mon hébergement mutualisé, c'était un conseil donné sur Mastodon quand j'ai interpelé Sebsauvage à propos du bug. J'ai fait ça peu avant l'ouverture du problème ici. Je n'ai aucun idée si ça a changé de serveur.

Je vais passer à 120 min et on verra.

En écrivant mon message précédent, je réfléchissais à un problème récurrent dont la source est peut-être aussi liée à ce qui nous occupe : depuis longtemps maintenant, j'ai constaté qu'il fallait me loguer assez régulièrement. J'ai bien sûr rapidement essayé ce que tu proposes ici mais ça entraine une série de message d'erreurs (faut que je renouvelle l'opération, je ne me souviens plus de ces messages).

C'est probablement un réglage de PHP, donc du côté hébergeur. J'ai contacté Gandi en leur disant que la partie dédié sur FAQ n'était pas assez précise pour le débutant que je suis et ils ont été lapidaires en me donnant, grands seigneurs, le lien vers cette même section de leur FAQ... J'ai abandonné.

Ils ont relevé quelque chose à propos de mon installation Kriss Feed :

Néanmoins je n'observe dans les logs que l'avertissement suivant qui pourrait être en relation avec le problème que vous rencontrez : [25-Jan-2021 19:22:44 Europe/Paris] PHP Warning: session_set_cookie_params(): Cannot change session cookie parameters when session is active in [blablabla]/rss/index.php on line 8552

Pouvez vous me confirmer que vous rencontrez le même problème récurrent avec l'utilisation d'un autre navigateur web que celui que vous utilisez généralement ?

Je reste à votre disposition pour toute demande d'information complémentaire.

Le problème persistait sur d'autres navigateurs, je l'ai signalé mais n'ai jamais eu d'autre réponse de leur part.

Chassegnouf commented 2 years ago

Il devient de plus en plus clair, pour moi, peut-être à tort, que le problème qui nous occupe ici est un mauvais réglage de mon instance (et que ces réglages réclament une technicité que je n'ai pas). Du moins en partie. Même si je suis pas mal chafouin vis à vis de Gandi, je voudrais éviter cependant d'instrumentaliser ton service support soit pour que tu règles mes problèmes de réglages à ma place, soit pour prendre les lecteurs à témoin. Ca n'est sincèrement pas mon objectif. Dès que tu penses que le problème est 100 % de mon côté (ie. de mon hébergeur) et pas un problème de compatibilité, dis le moi et j'essaierai de régler mon problème sur la communauté de Gandi.

tontof commented 2 years ago

Je viens de faire une modif sur la dev pour corriger le problème de PHP Warning: session_set_cookie_params()

Pour ton problème de déconnexion tu peux essayer en modifiant le fichier session.php dans le dossier plugins par

<?php
ini_set("session.cookie_lifetime", "31536000");
ini_set("session.gc_maxlifetime", '86400');
ini_set('session.save_path', $_SERVER['DOCUMENT_ROOT'].'/sessions');

C'est ce que j'utilise personnellement et je n'ai jamais de soucis. Il y a peut-être un problème de session : https://github.com/tontof/kriss_feed/issues/428 mais je n'ai pas réussi à reproduire le problème de mon côté et ne peux donc pas le corriger, si correction possible il y a. Avec ce fichier session.php si tu as des messages d'erreur il faudrait me les donner pour que je puisse éventuellement comprendre.

Je pense qu'il y a des problèmes possibles des 2 côtés. En ce qui concerne l'erreur associée à certains flux le problème est sûrement lié à la notion même de mutualisé. Tu partages un serveur sur lequel le comportement d'autres personnes peut conduire à un bannissement sur d'autres serveurs. Je pense que c'est pour ça que mon hébergeur considère ton mutualisé comme spammeur. Dans ce cas pas grand chose à faire si ce n'est espérer que ce ne soit que ponctuel.

Chassegnouf commented 2 years ago

Purée, alors que j'étais entrain de te copier les messages d'erreur et enlevais par fausse pudeur les détails inutiles, je me suis rendu compte d'une anomalie : dans le fichier session.php, tu fais référence à une URL en "/sessions" qu'on retrouve dans le message d'erreur. Mon installation KrissFeed est dans un sous-dossier, c'est pour ça que ça ne fonctionnait pas ! J'ai corrigé le fichier session.php et je n'ai plus ce message d'erreur.

D'ici demain, je verrais si le fonctionnement du site a changé pour les sessions.

tontof commented 2 years ago

J'espère que c'est tout corrigé maintenant !