diff --git a/ext/dom/document.c b/ext/dom/document.c
index 71e12b6e7a95d..e0eeb80fcb7ec 100644
--- a/ext/dom/document.c
+++ b/ext/dom/document.c
@@ -187,7 +187,7 @@ int dom_document_standalone_read(dom_object *obj, zval *retval)
return FAILURE;
}
- ZVAL_BOOL(retval, docp->standalone);
+ ZVAL_BOOL(retval, docp->standalone > 0);
return SUCCESS;
}
diff --git a/ext/dom/tests/domobject_debug_handler.phpt b/ext/dom/tests/domobject_debug_handler.phpt
index 8dbaa61a16545..c305c215c3d3b 100644
--- a/ext/dom/tests/domobject_debug_handler.phpt
+++ b/ext/dom/tests/domobject_debug_handler.phpt
@@ -28,8 +28,8 @@ DOMDocument Object
[actualEncoding] =>
[encoding] =>
[xmlEncoding] =>
- [standalone] => 1
- [xmlStandalone] => 1
+ [standalone] =>
+ [xmlStandalone] =>
[version] => 1.0
[xmlVersion] => 1.0
[strictErrorChecking] => 1
diff --git a/ext/dom/tests/gh11791.phpt b/ext/dom/tests/gh11791.phpt
new file mode 100644
index 0000000000000..22d94b51312a7
--- /dev/null
+++ b/ext/dom/tests/gh11791.phpt
@@ -0,0 +1,39 @@
+--TEST--
+GH-11791 (Wrong default value of DOMDocument.xmlStandalone)
+--EXTENSIONS--
+dom
+--FILE--
+loadXML('');
+var_dump($doc->xmlStandalone);
+$doc->xmlStandalone = true;
+var_dump($doc->xmlStandalone);
+
+$doc = new DOMDocument();
+$doc->loadXML('');
+var_dump($doc->xmlStandalone);
+$doc->xmlStandalone = true;
+var_dump($doc->xmlStandalone);
+
+$doc = new DOMDocument();
+$doc->loadXML('');
+var_dump($doc->xmlStandalone);
+$doc->xmlStandalone = true;
+var_dump($doc->xmlStandalone);
+
+$doc = new DOMDocument();
+$doc->loadXML('');
+var_dump($doc->xmlStandalone);
+$doc->xmlStandalone = false;
+var_dump($doc->xmlStandalone);
+?>
+--EXPECT--
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(true)
+bool(false)