[RESOLU] file_get_contents() renvoyant une erreur 404.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] file_get_contents() renvoyant une erreur 404.

Re: file_get_contents() renvoyant une erreur 404.

par fab'blab » 16 sept. 2016, 11:25

Salut,

Le fin mot de l'histoire, après avoir sollicité de mon hébergeur : il ne s'agissait pas d'un blacklistage de mon Ip. Le domaine visé (hautes-alpes.fr) est déclaré chez mon hébergeur mais sans redirection des dns (simplement un sous-domaine manifestement). Du coup lorsqu'un script appelait une page de hautes-alpes.fr, elle était cherchée dans le réseau de l'hébergeur (puisque domaine déclaré) et non à l'extérieur.

Cela faisait effectivement partie des possibilités que j'avais lues lors de mes recherches sur internet.

De plus, d'après la personne du support qui m'a répondu, dans le cas d'un blacklistage, on obtient des messages d'erreur (444, 503, 403, etc...) mais pas une page 404.

Bref, ils ont pu régler mon problème qui est donc résolu pour moi.
Mon expérience pourra peut-être servir à d'autres personnes.

Re: file_get_contents() renvoyant une erreur 404.

par @rthur » 13 sept. 2016, 16:41

C'est suite à un changement d'hébergeur donc clairement demande à ton hébergeur d'investiguer.
Tu le payes pour un service, utilise leur support.

J'ai testé ton script et il fonctionne bien, on récupère bien le rss donc voit avec ton hébergeur si ce n'est pas un pb de firewall de son côté, et si c'est un problème de blacklistage, qu'il te mettes sur une autre IP ou plage d'IP.


Ou sinon, la solution en dernier recours, c'est que tu passes par un proxy comme feedburner :
https://feeds.feedburner.com/departemen ... utes-alpes

Re: file_get_contents() renvoyant une erreur 404.

par fab'blab » 13 sept. 2016, 15:37

Le blacklistage est la première chose qui m'est venu à l'esprit.
Je suis juste étonné d'avoir accès au contenu de la page d'accueil.

Le code de ma page de debug est volontairement minimaliste :) :

Code : Tout sélectionner

<?php set_time_limit(600); $url="http://www.hautes-alpes.fr/rss_agenda.php"; $contenu=file_get_contents($url); var_dump($contenu); exit();
Dans le script d'origine :

Code : Tout sélectionner

ini_set("default_socket_timeout","$duree_max"); ini_set("user_agent","Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:31.0) Gecko/20100101 Firefox/31.0"); $contexte=stream_context_create(array("http"=>array("method"=>"GET", "timeout"=>$duree_max), "ssl"=>array("verify_peer"=>false,"verify_peer_name"=>false))); $contenu=trim(file_get_contents($this->url,NULL,$contexte));
Je peux en effet tenter de contacter l'éditeur du site mais je ne m'attends pas à une réponse...
Déjà qu'ils ne répondent pas quand je les préviens que leurs flux sont en carafe :-(

Re: file_get_contents() renvoyant une erreur 404.

par moogli » 13 sept. 2016, 15:17

salut,
t'es certain que ton serveur peu accéder à ce site (genre black list d'ip ou autre ?)

le lien et le code fonctionne du coup je pencherais de ce coté la.
au pire tu peux demander à l'éditeur du site si ce genre de chose est en placeet voir pourquoi tu ne peu pas consommer le feed rss

ce serait pas mal si tu pouvais voir ce que tu envois envoie exactement comme requête dans les deux cas.

@+

Re: file_get_contents() renvoyant une erreur 404.

par fab'blab » 13 sept. 2016, 15:08

Bonjour,

Les guillemets ne sont que dans le "warning" mais pas dans mon code.
En fait, l'uri passe par une variable dans ma page de test et par l'attribut d'un objet dans le script réel :

Code : Tout sélectionner

$contenu=file_get_contents($url);
Je viens de faire un nouveau test cette fois en essayant de récupérer le contenu d'une page interne de leur site : http://www.hautes-alpes.fr/evenement/56 ... ualite.htm

Et là pareil : erreur 404 :(

A priori, je n'ai donc accès qu'à la page d'accueil.

Re: file_get_contents() renvoyant une erreur 404.

par @rthur » 13 sept. 2016, 14:32

Bonjour,

il manque les guillemets autour de l'url

file_get_contents() renvoyant une erreur 404.

par fab'blab » 13 sept. 2016, 11:44

Hello,

Il y a peu j'ai changé l'hébergement d'un de mes sites pour passer sur o2switch en en profitant pour passer en php7.
Mon script est un agrégateur de flux et depuis ma migration je rencontre une difficulté avec un flux.

En cherchant à récupérer son contenu via file_get_contents(), j'obtiens un message d'erreur :
file_get_contents(http://www.hautes-alpes.fr/rss_agenda.php): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in...
Le même script arrive à lire ce même flux quand je le teste sur mon pc et même sur un autre hébergement mutualisé (OVH Performance), pourtant également sous php7.

Le plus drôle est que même sur o2switch, j'arrive parfaitement à récupérer le contenu de la page d'accueil du site qui m'intéresse via un :

Code : Tout sélectionner

file_get_contents(http://www.hautes-alpes.fr)
Ceci semble donc exclure le blacklistage de o2switch.

Suite à mes recherches sur internet, j'ai essayé de remplacer file_get_contents() par curl() comme indiqué ici mais sans plus de succès... toujours une erreur 404.

Je peux très bien enlever ce flux de ceux proposés à mes utilisateurs.. mais j'aimerais mieux comprendre l'astuce surtout que le CMS Eolas est utilisé par d'autres collectivités donc le problème pourrait se reproduire.

Une idée ?