Edit report at http://bugs.php.net/bug.php?id=48511&edit=1

 ID:               48511
 Updated by:       rricha...@php.net
 Reported by:      geoffers+phpbugs at gmail dot com
 Summary:          libxml_get_errors() returns an empty array but
                   libxml_get_last_error() doesn't
-Status:           Assigned
+Status:           Bogus
 Type:             Bug
 Package:          XML Writer
 Operating System: Mac OS 10.5.7
 PHP Version:      5.3CVS-2009-06-09 (CVS)
 Assigned To:      rrichards

 New Comment:

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

You must set libxml_use_internal_errors(true); in order to to use the
structured 

error handler and get a populated libxml_get_errors() return value. 

libxml_get_last_error() always will return last error regardless of the
xml error 

handler used.


Previous Comments:
------------------------------------------------------------------------
[2009-08-21 09:38:58] michael202 at gmx dot de

Oh I forgot to mention that the error is present in the release version
of php 5.3:

PHP 5.3.0 (cli) (built: Jul 29 2009 15:03:42)

------------------------------------------------------------------------
[2009-08-21 09:37:18] michael202 at gmx dot de

I have a similar problem:



libxml_get_errors() is empty after loading a faulty XML with

simplexml_load_file() BUT libxml_get_last_error() contains the last

error:

var_dump(libxml_get_errors()) ----> array(0) { }

var_dump(libxml_get_last_error()) ----> object(LibXMLError)#11 ....







"solution" is to use libxml_use_internal_errors:



libxml_clear_errors(); // otherwise you also get all of the old errors

libxml_use_internal_errors(true);



other advantage is the you do not get any PHP Warning outputs and you
can call simplexml_load_file without the @-operator





strange though:

simplexml_load_file() displays the correct error position in the "PHP
Warning" BUT libxml_get_errors() does not contain it.

------------------------------------------------------------------------
[2009-06-09 17:49:07] geoffers+phpbugs at gmail dot com

Description:
------------
I would expect the last member of the array returned by
libxml_get_errors() to be equal to libxml_get_last_error(), but the
former returns an empty array while the latter returns the expected
error object.

Reproduce code:
---------------
<?php



$foo = new XMLWriter();

$foo->openMemory();

$foo->startElement("\xEF\xBF\xBF");

var_dump(libxml_get_last_error());

var_dump(libxml_get_errors());

var_dump(libxml_get_last_error() == end(libxml_get_errors()));

Expected result:
----------------
Warning: XMLWriter::startElement(): Char 0xFFFF out of allowed range in
/Users/gsnedders/Desktop/test.php on line 5



Warning: XMLWriter::startElement(): Invalid Element Name in
/Users/gsnedders/Desktop/test.php on line 5

object(LibXMLError)#2 (6) {

  ["level"]=>

  int(3)

  ["code"]=>

  int(9)

  ["column"]=>

  int(0)

  ["message"]=>

  string(33) "Char 0xFFFF out of allowed range

"

  ["file"]=>

  string(0) ""

  ["line"]=>

  int(0)

}

array(1) {

  [0]=>

  object(LibXMLError)#2 (6) {

    ["level"]=>

    int(3)

    ["code"]=>

    int(9)

    ["column"]=>

    int(0)

    ["message"]=>

    string(33) "Char 0xFFFF out of allowed range

"

    ["file"]=>

    string(0) ""

    ["line"]=>

    int(0)

  }

}

bool(true)

Actual result:
--------------
Warning: XMLWriter::startElement(): Char 0xFFFF out of allowed range in
/Users/gsnedders/Desktop/test.php on line 5



Warning: XMLWriter::startElement(): Invalid Element Name in
/Users/gsnedders/Desktop/test.php on line 5

object(LibXMLError)#2 (6) {

  ["level"]=>

  int(3)

  ["code"]=>

  int(9)

  ["column"]=>

  int(0)

  ["message"]=>

  string(33) "Char 0xFFFF out of allowed range

"

  ["file"]=>

  string(0) ""

  ["line"]=>

  int(0)

}

array(0) {

}

bool(false)


------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=48511&edit=1

Reply via email to