2010-06-29 10 views
0

J'utilise une implémentation PHP4 de SimpleXML, qui utilise les fonctions intégrées xml_* de PHP 4. J'ai un problème étrange que je suis incapable de diagnostiquer en raison de aucun rapport d'erreur sur le serveur et ne pas être en mesure d'activer error_reporting.Problème inconnu avec les fonctions d'analyse XML de PHP

J'ai modifié la fonction Parse() pour inclure ceci:

[stuff here to initialise the parser] 
echo '<textarea rows="8" cols="50">', htmlspecialchars($this->xml), '</textarea>'; 
$parsed = xml_parse($this->parser, $this->xml) or die('error with xml_parse function'); 

Le textarea affiche l'amende XML et le XML lui-même est tout à fait valable. Mais la page s'arrête juste après cela et ne semble pas appeler la fonction xml_parse, ou afficher le message 'die'.

Doit également ajouter que cela fonctionne très bien sur d'autres pages, il semble juste être un problème avec cette page particulière pour une raison quelconque.

Que pourrait-il se passer ici? Existe-t-il d'autres moyens de déboguer cela?

Répondre

0

Il semble que le problème était dû à l'XML étant trop grand pour l'analyseur. Puisque nous ne pouvons pas activer error_reporting, il n'y avait aucun moyen d'obtenir des informations de débogage correctes.

J'ai décidé d'utiliser un script séparé pour générer le code HTML de la page, afin d'éviter des problèmes avec la page qui tombe à l'occasion.

0

Oui, vous pouvez déboguer en ajoutant ceci à votre script:

error_reporting(E_ALL); 

va donc activer le rapport d'erreur. De même, l'utilisation de 'ou die' ne fonctionne que si l'appel de fonction avant de renvoyer une valeur falsey. En cas d'erreurs fatales, cela n'aide pas.

0

Essayez de définir l'erreur de déclaration et voir quelle erreur est cependant, il est probable qu'il y ait une erreur fatale à venir:

ini_set('display_errors', true); 
error_reporting(E_ALL); 
0

Essayez d'obtenir le message d'erreur d'analyse spécifique XML:

echo xml_error_string(xml_error_code($parser)); 

IIRC, ils ne sont pas sortis par défaut quel que soit le paramétrage de votre rapport d'erreur.

Référence:

Questions connexes