Erreur "failed to load external entity" avec Simpl

mrprout
Invité n'ayant pas de compte PHPfrance

02 févr. 2007, 02:26

Salut !

Voilà j'ai un problème : dès que j'appelle mon fichierXML (en réalité un PHP qui génère un XML), j'obtiens le message d'erreur énoncé dans le titre. Voici mon code :

$xml = simplexml_load_file('monFichier.php?param1=toto&param2=bob');

J'ai l'impression que la faut vient de "?param1=toto&param2=bob". J'ai pourtant appliqué un htmlspecialchars sur l'url, j'ai même essayé avec url_encode() et rawurlencode(), mais j'ai toujours mon erreur "failed to load external entity". Pourtant le fichier XML est bon.

D'où vient l'erreur ? Merci énormément pour vos réponses, car là je tourne en rond ! :-(

131
Eléphanteau du PHP | 45 Messages

02 févr. 2007, 11:34

les seules entités parsées dans un XML ( simplexml_load machin)
seront < > &quote; et &

Le reste ne sera pas reconnu, tu dois tenter de parser un fichier avec des &nbsp; ou des &eacute;

Quand bien même tu declarerait tes entitées via une dtd externe, ca ne marcherait pas ( voir mon sujet à ce propos ).

Une solution simple ?
$file_content=file_get_contents("http://fichier.php?---");
$file_content=str_replace("&","&",$file_content);
$xml=simplexml_load_string(
echo str_replace("&","&",$xml->asXML());
Mais en fait le vrai probleme est que tu semble bruler des etapes et ne pas bien comprendre ce que tu fais.

Ton fichier est il bien executé quand tu tente de le parser ?
$file='monFichier.php?param1=toto&param2=bob';
$xml = simplexml_load_file($file); 
Si tu fais un echo file_get_contents($file); tu obtient quoi ....

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

02 févr. 2007, 12:21

131, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer