tags:

views:

35

answers:

4

I'm using a PHP4 implementation of SimpleXML, which uses the built-in xml_* functions from PHP 4. I have an odd problem that I'm unable to diagnose due to no error reporting on the server and not being able to turn on error_reporting.

I've modified the Parse() function to include this:

[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');

The textarea displays the XML fine, and the XML itself is perfectly valid. But the page stops right after that and doesn't appear to call the xml_parse function, or output the 'die' message.

Should also add that this works fine on other pages, it just appears to be a problem with this particular page for some reason.

What could be happening here? Are there other ways to debug this?

A: 

Yes, you can debug this by adding this to your script:

error_reporting(E_ALL);

Thus will turn on error reporting.

Also, using ‘or die‘ only works if the function call before it returns a falsey value. In the event of fatal errors, it doesn't help.

Mike Sherov
A: 

Try to set the error reporting on and see what error comes though, it is likely there is some fatal error coming up:

ini_set('display_errors', true);
error_reporting(E_ALL);
Sarfraz
A: 

Try getting the XML specific parser error message:

echo xml_error_string(xml_error_code($parser));

IIRC, these are not output by default no matter what your error reporting is set to.

Reference:

Pekka
A: 

It seems that the problem was due to the XML being too big for the parser. Since we can't turn on error_reporting there was no way to get proper debugging info.

I decided to use a separate script the generate the HTML for the page, to avoid issues with the page going down occasionally.

DisgruntledGoat