Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CodeIgniter Project Giving 303/Compression Error

Trying to setup a CodeIgniter based project for local development (LAMP stack), and once all the config file were updated (meaning I successfully had meaningful bootstrap errors for CodeIgniter), I get this error in my browsers:

  • Chrome
    Error 330 (net::ERR_CONTENT_DECODING_FAILED): Unknown error.
  • Firefox
    Content Encoding Error: The page you are trying to view cannot be shown because it uses an invalid or unsupported form of compression.

Just using wget to fetch the file works fine, no errors and I get the content I'm expecting. Not sure if this is something with CI and the Server, or just something weird with the project. Has anyone seen this before?

like image 783
Tim Lytle Avatar asked Mar 13 '10 13:03

Tim Lytle


2 Answers

CodeIgniter seems to have its own method of gzipping its output (Why, I don't know, but I'm not very familiar with CI.)

According to this forum entry, such an error can occur when PHP error messages screw up the compressed content. Adjusting error_reporting to E_ALL ^ E_NOTICE did the trick there.

Update: There also seems to be a CI config setting:

$config['compress_output'] = FALSE;
like image 130
Pekka Avatar answered Sep 20 '22 21:09

Pekka


Not sure if my comment is valuable here, but I had a similar issue that I want to share with you, who knows may be it can help some of you.

For my project, I have activated the GZIP in my CI config file:

$config['compress_output'] = TRUE;

In the config file it is well said that:

| Enables Gzip output compression for faster page loads.  When enabled,
| the output class will test whether your server supports Gzip.
| Even if it does, however, not all browsers support compression
| so enable only if you are reasonably sure your visitors can handle it.
|
| VERY IMPORTANT:  If you are getting a blank page when compression is enabled it
| means you are prematurely outputting something to your browser. It could
| even be a line of whitespace at the end of one of your scripts.  For
| compression to work, nothing can be sent before the output buffer is called
| by the output class.  Do not 'echo' any values with compression enabled.
|
*/

The "Do not 'echo' any values with compression enabled." is very important here.

However, my function needs to echo a json encoded array for my Ajax call.

In order to fix that, I have added the "exit" function after my "echo" into the function.

    echo json_encode($arr_ajaxResults);
    exit();

Now, with this input, I don't face no more the "Content Encoding" error.

I hope it can help guys who have the same issue.

like image 22
Youssef Avatar answered Sep 21 '22 21:09

Youssef