8797 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Je reçois la réponse suivante en utilisant la fonction simplexml_load_file() :
Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "http://xoap.weather.com/weather/local/BEXX0024?cc=*&unit=m&dayf=7"
Je n'ai pas ce problème si le fichier XML est copier en local dans, par exemple meteo.xml
Le code :

    if (file_exists("meteo.xml"{
      $XmlMeteo = simplexml_load_file("meteo.xml");
    } else {
      $Ville = 'BEXX0024';
      $NombreDeJours = 7;
      $Url = "http://xoap.weather.com/weather/local/".$Ville."?cc=*&unit=m&dayf=".$NombreDeJours;
      $XmlMeteo = simplexml_load_file($Url);
    }

Dernière précision :
j'ai ça en local sur mon serveur WAMPMSS avec :
Apache/2.2.9 (Win32)
mysql 5.0.67-community-nt
php 5.2.6
De même que sur le site (OVH - PHP 5.2.9) visible ici

Merci d'avance pour votre aide
Modifié par Philix (26 May 2009 - 14:50)
Salut,

ton code fonctionne chez moi... donc il s'agit peut-être d'une question de paramétrage.

A tout hasard tu pourrais essayer :
<?php
$Ville = 'BEXX0024';
$NombreDeJours = 7;
$Url = "http://xoap.weather.com/weather/local/".$Ville."?cc=*&unit=m&dayf=".$NombreDeJours;
$file = file_get_contents($Url);
$xml = simplexml_load_string($file);
echo '<pre>';
print_r($xml);
echo '</pre>';
?>
Bonjour Heyoan,

Pas mieux (mais bien essayé la tentative avec file_get_contents; j'y avais pas pensé)

Warning: file_get_contents(http://xoap.weather.com/weather/local/BEXX0024?cc=*&unit=m&dayf=7) [function.file-get-contents]: failed to open stream: No error in G:\wampMSS\www\dotclear\plugins\meteoWend\_public.php on line 30

Entre temps j'ai sorti le code du widget dotclear que je tente de préparer ... et ça fonctionne Smiley biggol
Le problème doit venir d'ailleurs ...
J'ai vérifié les droits des fichiers et répertoires ... j'ai même testé avec 777 partout, rien ne change.
J'y perd mon HTML euhhh... mon PHP ... mais je cherche encore Smiley cligne
Philix a écrit :
Entre temps j'ai sorti le code du widget dotclear que je tente de préparer ... et ça fonctionne Smiley biggol
Le problème doit venir d'ailleurs ...
Ah ben oui du coup...

Philix a écrit :
J'ai vérifié les droits des fichiers et répertoires ... j'ai même testé avec 777 partout, rien ne change.
Ben vu que c'est au moment de récupérer les infos distantes ça ne peut pas être en rapport avec des CHMOD... je verrais bien une conversion de l'url (genre urlencode) qui ne se passerait pas bien... L'idéal serait de debugger et de voir ce que contient $Url juste avant de l'utiliser...
$Url est tout bon.
Quand je mets le fichier local sous la forme :
$Url = meteo.xml"

c'est ok mais si je l'encode sous la forme :
$Url = 'http://localhost/Dotclear/plugins/meteoWend/meteo.xml';

ça foire !
Cela semble donc lié au protocole http (je pense à un problème de header) et il faudrait que je potasse le fonctionnement des widgets dotclear un peu plus à fond.

Ton avis sur un problème de header ?
(Je pense que je devrais poser ma question sur le forum "dotclear")
Philix a écrit :
Ton avis sur un problème de header ?
Hmm... Aucun ! Smiley langue

Et je ne connais rien à Dotclear...
Philix a écrit :
Bonjour à tous,

Je reçois la réponse suivante en utilisant la fonction simplexml_load_file() :
Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "http://xoap.weather.com/weather/local/BEXX0024?cc=*&unit=m&dayf=7"
Je n'ai pas ce problème si le fichier XML est copier en local dans, par exemple meteo.xml
Le code :

    if (file_exists("meteo.xml"{
      $XmlMeteo = simplexml_load_file("meteo.xml");
    } else {
      $Ville = 'BEXX0024';
      $NombreDeJours = 7;
      $Url = "http://xoap.weather.com/weather/local/".$Ville."?cc=*&unit=m&dayf=".$NombreDeJours;
      $XmlMeteo = simplexml_load_file($Url);
    }

Dernière précision :
j'ai ça en local sur mon serveur WAMPMSS avec :
Apache/2.2.9 (Win32)
mysql 5.0.67-community-nt
php 5.2.6
De même que sur le site (OVH - PHP 5.2.9) visible ici

Merci d'avance pour votre aide


bonjour je suis egalement (a titre perso) utilisateur de dotclear

ton plugin est super génial
le partagerai tu ?
bon c'est vrai lol ça fait ramasse miettes mais j'ai pas encore vu un pligin bien tout comme ca
donc je réitère ma demande....
partagerai-tu ton pluggin ?
ou bien le code source etc?

Merci de ta réponse (positive ou négative soit-elle)
Salutations!
Bonjour s-o-m-e-y,

Sans problème, un pluggin pour Dotclear est forcément gratuit mais il n'est pas encore terminé. (il manque la partie admin pour choisir la ville)
Donc, ou tu es patient (j'ai peu de temps actuellement) pour pouvoir l'intégrer en un "hop" ou tu ne l'es pas et je te le communique en l'état.

Le problème ci-dessus est résolu (solution trouvée sur le forum Dotclear) mais j'ai pas vraiment compris pourquoi ça ne fonctionnait pas. En fait je passe maintenant par "HttpClient::quickGet" une fonction de Clearbricks utilisé dans Dotclear. Dès que j'ai "compris" je communiquerai l'info.
Philix > tout premièrement
merci pour cette réponse...
et oui des fois ...y en à qui donnent aucunes suites (sauf lorsqu'ils ont un problème à régler)

Ensuite, si tu ok je suis prêt à "tester" ton plugin, même sans interface d'admin...
(si tu me dit juste ou dans le code je dois mettre le code et/ou nom de la ville etc)

Donc, je veux bien me faire la main sur ton plugin non fini...et bien entendu
j'espère que dès que tu l'aura fini tu me donnera un coup de sonnette pour me dire que ton plug est "officiellement finished" Smiley cligne

-PS- Comment compte tu me le filer?
par un lien ftp ou autre hébergement? par mail, par MP ?

Salutations Smiley ravi
Comme promis, l'explication (qui n'est pas un problème de codage PHP) :
Extrait de la FAQ dotclear :
Fonctions PHP
Pourquoi certains fopen wrappers sont-ils désactivés? 

C'est une mesure de sécurité. 

Comment contourner ce problème? 

Il faut utiliser la classe netHttp de Clearbricks : 

$res = netHttp::quickGet($url);

Ben voilà, que ça puisse servir à d'autres Smiley cligne