Does any body has any idea how to find where the leak is that provokes this "Content Encoding Error" with $config['compress_output'] = true
in CodeIgniter?
I've trying to debug this error for days, but I can't seem to find where the leak is. LogLevel
is at debug
but I see no info in the log when this error happens.
So, any ideas how to debug this?
I really don't want to disable the compress_output
feature, I just want to see how can I trace where the error is produced
I've looked over and over again to see if there is any output in the controllers... and there is none, so some where else must be the error provoked. No models/database, just controllers, libraries, helpers and views
This issue is where the output buffering starts. The check for the config variable is in system/core/Output.php
in _display()
. It starts the gzipped buffering after a lot of code has already run. This leaves the potential for output to have occurred before it buffering starts.
With compress_output
set to false
it doesn't matter because nothing is encoded. With it set to true
you end up with mixed content. Some output is encoded and some is not which causes the compression error.
There are two solutions:
1) You could leave compress_output
set to false and add ob_start('ob_gzhandler');
to the top of your index.php file. This will ensure that all output is always gzipped, including errors.
2) The other solution is to add ob_flush();
before ob_start('ob_gzhandler');
in system/Output.php
. This will gzip output when there are no errors and serve you unencoded content when there are errors.
I think 2 is the better solution and should be implemented by the CodeIgniter team. But if you don't want to muck with the system code (changes will go away when you upgrade) then 1 is the better solution for you.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With