Index: src/wp-admin/link-parse-opml.php =================================================================== --- src/wp-admin/link-parse-opml.php (revision 38613) +++ src/wp-admin/link-parse-opml.php (working copy) @@ -72,19 +72,24 @@ } // Create an XML parser -$xml_parser = xml_parser_create(); +if ( ! function_exists( 'xml_parser_create' ) ) { + trigger_error( __( "PHP's XML extension is not available. Please contact your hosting provider to enable PHP's XML extension." ) ); +} +else { + $xml_parser = xml_parser_create(); -// Set the functions to handle opening and closing tags -xml_set_element_handler($xml_parser, "startElement", "endElement"); + // Set the functions to handle opening and closing tags + xml_set_element_handler($xml_parser, "startElement", "endElement"); -if ( ! xml_parse( $xml_parser, $opml, true ) ) { - printf( - /* translators: 1: error message, 2: line number */ - __( 'XML Error: %1$s at line %2$s' ), - xml_error_string( xml_get_error_code( $xml_parser ) ), - xml_get_current_line_number( $xml_parser ) - ); -} + if ( ! xml_parse( $xml_parser, $opml, true ) ) { + printf( + /* translators: 1: error message, 2: line number */ + __( 'XML Error: %1$s at line %2$s' ), + xml_error_string( xml_get_error_code( $xml_parser ) ), + xml_get_current_line_number( $xml_parser ) + ); + } -// Free up memory used by the XML parser -xml_parser_free($xml_parser); + // Free up memory used by the XML parser + xml_parser_free($xml_parser); +} Index: src/wp-includes/IXR/class-IXR-message.php =================================================================== --- src/wp-includes/IXR/class-IXR-message.php (revision 38613) +++ src/wp-includes/IXR/class-IXR-message.php (working copy) @@ -44,6 +44,11 @@ function parse() { + if ( ! function_exists( 'xml_parser_create' ) ) { + trigger_error( __( "PHP's XML extension is not available. Please contact your hosting provider to enable PHP's XML" ) ); + return false; + } + // first remove the XML declaration // merged from WP #10698 - this method avoids the RAM usage of preg_replace on very large messages $header = preg_replace( '/<\?xml.*?\?'.'>/s', '', substr( $this->message, 0, 100 ), 1 ); Index: src/wp-includes/atomlib.php =================================================================== --- src/wp-includes/atomlib.php (revision 38613) +++ src/wp-includes/atomlib.php (working copy) @@ -121,6 +121,12 @@ array_unshift($this->ns_contexts, array()); + if ( ! function_exists( 'xml_parser_create_ns' ) ) { + trigger_error( __( "PHP's XML extension is not available. Please contact your hosting provider to enable PHP's XML extension." ) ); + + return false; + } + $parser = xml_parser_create_ns(); xml_set_object($parser, $this); xml_set_element_handler($parser, "start_element", "end_element"); Index: src/wp-includes/feed.php =================================================================== --- src/wp-includes/feed.php (revision 38613) +++ src/wp-includes/feed.php (working copy) @@ -538,6 +538,12 @@ return array('text', $data); } + if ( ! function_exists( 'xml_parser_create' ) ) { + trigger_error( __( "PHP's XML extension is not available. Please contact your hosting provider to enable PHP's XML extension." ) ); + + return array('html', ""); + } + $parser = xml_parser_create(); xml_parse($parser, '