[php-src] master: std: add test for unserialize_callback_func INI setting

Gina Peter Banyard <[email protected]> Wed, 29 Jul 2026 09:18:39 +0000
Newsgroups gmane.comp.php.cvs.general
Message-ID <[email protected]>
Author: Gina Peter Banyard (Girgias)
Date: 2026-07-29T10:18:26+01:00

Commit: https://github.com/php/php-src/commit/5226e2f49f549a1b3313e453af44a2f68e952e92
Raw diff: https://github.com/php/php-src/commit/5226e2f49f549a1b3313e453af44a2f68e952e92.diff

std: add test for unserialize_callback_func INI setting

Changed paths:
  A  ext/standard/tests/serialize/unserialize_callback_func_INI_modifications.phpt


Diff:

diff --git a/ext/standard/tests/serialize/unserialize_callback_func_INI_modifications.phpt b/ext/standard/tests/serialize/unserialize_callback_func_INI_modifications.phpt
new file mode 100644
index 000000000000..c337903ce293
--- /dev/null
+++ b/ext/standard/tests/serialize/unserialize_callback_func_INI_modifications.phpt
@@ -0,0 +1,29 @@
+--TEST--
+unserialize_callback_func INI setting set multiple times during runtime
+--FILE--
+<?php
+
+function unserialize_cb_original($name)
+{
+    ini_set('unserialize_callback_func', 'unserialize_cb_changed');
+}
+
+function unserialize_cb_changed($name)
+{
+}
+
+ini_set('unserialize_callback_func', 'unserialize_cb_original');
+
+unserialize('O:3:"FOO":0:{}');
+
+var_dump(ini_get('unserialize_callback_func'));
+
+ini_restore('unserialize_callback_func');
+
+var_dump(ini_get('unserialize_callback_func'));
+
+?>
+--EXPECTF--
+Warning: unserialize(): Function unserialize_cb_original() hasn't defined the class it was called for in %s on line %d
+string(22) "unserialize_cb_changed"
+string(0) ""