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	2022-10-31 05:36:09.000000000 -0500
+++ b/ext/dom/document.c	2024-05-18 01:59:38.000000000 -0500
@@ -25,6 +25,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	2021-11-16 05:18:39.000000000 -0600
+++ b/ext/libxml/libxml.c	2024-05-19 14:29:03.000000000 -0500
@@ -485,7 +485,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;
@@ -736,7 +740,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);
 
@@ -1017,9 +1025,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	2022-10-31 05:36:06.000000000 -0500
+++ b/ext/libxml/php_libxml.h	2024-05-18 01:59:38.000000000 -0500
@@ -37,6 +37,7 @@
 
 #include "zend_smart_str.h"
 #include <libxml/tree.h>
+#include <libxml/parser.h>
 
 #define LIBXML_SAVE_NOEMPTYTAG 1<<2
 
