Fix libxml2 2.12.x build issues.
https://github.com/php/php-src/commit/8a95e616b91ac0eeedba90a61e36e652919763f2
https://github.com/php/php-src/commit/0a39890c967aa57225bb6bdf4821aff7a3a3c082
--- a/ext/dom/document.c	2020-09-30 00:15:55.000000000 -0500
+++ b/ext/dom/document.c	2024-05-19 14:58:38.000000000 -0500
@@ -27,6 +27,7 @@
 #if HAVE_LIBXML && HAVE_DOM
 #include "php_dom.h"
 #include <libxml/SAX.h>
+#include <libxml/xmlsave.h>
 #ifdef LIBXML_SCHEMAS_ENABLED
 #include <libxml/relaxng.h>
 #include <libxml/xmlschemas.h>
--- a/ext/libxml/libxml.c	2014-08-13 14:22:50.000000000 -0500
+++ b/ext/libxml/libxml.c	2024-05-20 15:46:25.000000000 -0500
@@ -432,7 +432,11 @@
 	return 1;
 }
 
-static void _php_list_set_error_structure(xmlErrorPtr error, const char *msg)
+#if LIBXML_VERSION >= 21200
+static void _php_list_set_error_structure(const xmlError *error, const char *msg)
+#else
+static void _php_list_set_error_structure(xmlError *error, const char *msg)
+#endif
 {
 	xmlError error_copy;
 	int ret;
@@ -544,7 +548,11 @@
 	va_end(args);
 }
 
+#if LIBXML_VERSION >= 21200
+PHP_LIBXML_API void php_libxml_structured_error_handler(void *userData, const xmlError *error)
+#else
 PHP_LIBXML_API void php_libxml_structured_error_handler(void *userData, xmlErrorPtr error)
+#endif
 {
 	_php_list_set_error_structure(error, NULL);
 
@@ -755,9 +763,7 @@
    Retrieve last error from libxml */
 static PHP_FUNCTION(libxml_get_last_error)
 {
-	xmlErrorPtr error;
-
-	error = xmlGetLastError();
+	const xmlError *error = xmlGetLastError();
 	
 	if (error) {
 		object_init_ex(return_value, libxmlerror_class_entry);
--- a/ext/libxml/php_libxml.h	2019-01-09 03:54:13.000000000 -0600
+++ b/ext/libxml/php_libxml.h	2024-05-20 15:37:55.000000000 -0500
@@ -36,6 +36,7 @@
 
 #include "ext/standard/php_smart_str.h"
 #include <libxml/tree.h>
+#include <libxml/parser.h>
 
 #define LIBXML_SAVE_NOEMPTYTAG 1<<2
 
