diff --git a/src/PhpSpreadsheet/Reader/Security/XmlScanner.php b/src/PhpSpreadsheet/Reader/Security/XmlScanner.php index a65797c1..c9c3ecc0 100644 --- a/src/PhpSpreadsheet/Reader/Security/XmlScanner.php +++ b/src/PhpSpreadsheet/Reader/Security/XmlScanner.php @@ -18,6 +18,11 @@ class XmlScanner private static $libxmlDisableEntityLoaderValue; + /** + * @var bool + */ + private static $shutdownRegistered = false; + public function __construct($pattern = 'pattern = $pattern; @@ -25,7 +30,10 @@ class XmlScanner $this->disableEntityLoaderCheck(); // A fatal error will bypass the destructor, so we register a shutdown here - register_shutdown_function([__CLASS__, 'shutdown']); + if (!self::$shutdownRegistered) { + self::$shutdownRegistered = true; + register_shutdown_function([__CLASS__, 'shutdown']); + } } public static function getInstance(Reader\IReader $reader)