PHP output buffering : ob_get_clean(): Failed to discard buffer of ob_gzhandler" whilst buffer has been set

Good day,

I am getting the following error in PHP :

ob_get_clean(): Failed to discard buffer of ob_gzhandler 

I am developing an application under Windows WAMPServer. And I have tried to launch my application today. Unfortunately the first thing I got was content encoding error. Whilst it worked perfectly under WAMP with the following code :

///########

This gave under Linux Centos and PHP 8.1 a content encoding error. A little digging on this forum gave me the following :

PHP Output buffering, Content Encoding Error caused by ob_gzhandler?

So I changed my code to :

{-code-3}

That gives me a little more. But unfortunately still an error :

Notice: ob_get_clean(): Failed to discard buffer of ob_gzhandler

Now I have been looking at the examples over and over again.

I found the following thread : failed to delete buffer. No buffer to delete

But the point is. There actually is buffer to clean. So that couldn't be the issue.

Where could my error be?

SOLUTION

I had :

    {-code-4}

But I should switch these two. Why exactly this is. I don't know. But maybe if someone wants. Add the explanation. But for reference. I still add this "question" so that someone doesn't have to spend a frustrating evening.

    {-code-5}

*please close this question

Answer

Answer

Answer

Answer

Answer

Answer

- ///########

Answer

Answer

Answer

Answer

Answer

Answer

- ///######## METHOD : PARSE TEMPLATE ///########

Answer

Answer

Answer

Answer

Answer

Answer

- ///########

Answer

Answer

Answer

Answer

Answer

Answer

- private static function parse($tpl){ ///######## TURN ON OUTPUT BUFFER ob_start(null, 32768); ///######## ENABLE GZIP ENCODING ob_start("ob_gzhandler"); ///######## ENABLE CACHING header('Cache-Control: public'); ///######## EXPIRES IN ONE {x} SECONDS, {default 86400 seconds (seven days)} if(self::$cache_expire) header('Expires: '.gmdate('D, d M Y H:i:s', time() + self::$cache_expire).' GMT'); ///######## ECHO CODE echo $tpl; ///######## GET THE OUTBUT BUFFER $tpl = ob_get_clean(); ///######## FLUSH BUFFER ob_end_flush(); ///########================================================== ///######## PARSED CODE ///########================================================== return $tpl; ///########================================================== }|||///########

Answer

Answer

Answer

Answer

Answer

Answer

- ///########

Answer

Answer

Answer

Answer

Answer

Answer

- ///######## METHOD : PARSE TEMPLATE ///########

Answer

Answer

Answer

Answer

Answer

Answer

- ///########

Answer

Answer

Answer

Answer

Answer

Answer

- private static function parse($tpl){ ///######## TURN ON OUTPUT BUFFER ob_start(null, 32768); ///######## ENABLE GZIP ENCODING ob_start("ob_gzhandler"); ///######## ENABLE CACHING header('Cache-Control: public'); ///######## EXPIRES IN ONE {x} SECONDS, {default 86400 seconds (seven days)} if(self::$cache_expire) header('Expires: '.gmdate('D, d M Y H:i:s', time() + self::$cache_expire).' GMT'); ///######## ECHO CODE echo $tpl; ///######## FLUSH ob_flush(); ///######## GET THE OUTBUT BUFFER $tpl = ob_get_clean(); ///########================================================== ///######## PARSED CODE ///########================================================== return $tpl; ///########================================================== }|||///######## TURN ON OUTPUT BUFFER ob_start(null, 32768); ///######## ENABLE GZIP ENCODING ob_start("ob_gzhandler");|||///######## ENABLE GZIP ENCODING ob_start("ob_gzhandler"); ///######## TURN ON OUTPUT BUFFER ob_start(null, 32768);

Source