Wiki source for BlankPageWorkaround


Show raw source

=====Only blank pages=====

===Symptoms===
In a newly-installed system (or one previously installed but migrated to a new host) accessing **any page** (including the home page and other pages that are known to exist) results in nothing but a blank page in the browser.

===Cause===
==Analysis==
Check if the host that Wikka is installed on is inserting banners in your pages. The way to check is to install a plain HTML page (so Wikka can be avoided). Many free (and some very cheap) hosts insert a banner. If your host does indeed insert a banner, the workaround below can provide a solution.

==Technical explanation==
When a (free) host inserts a banner, it interferes with two things Wikka does by default:
~-when Gzip-encoding is active, inserting a banner just messes things up (causing the **blank page**); and
~-Wikka calculates content-length for a HTTP header - which will be incorrect after the banner is inserted, so you would see a truncated page when Gzip is not active.

===Applies to===
Any Wikka version.

===Solution===
A new configuration value and a small change in the code can provide a workaround for banner insertion causing **blank pages** or **truncated pages**.

==Configuration==
First, open **##/wikka.config.php##** (after allowing write access on it!) and find the line %%(php) "wikiping_server" => "",%% (or possibly there's a value after the **##=>##**) and add the following line right after it: %%(php) "banner_insert" => "1",%% to indicate your host inserts banners in your Wikka's output. (Make the file read-only again after editing it).

==Main program==
Then open **##/wikka.php##** and find this code at the end: %%(php)$content = ob_get_contents();
if (strstr ($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip') && function_exists('gzencode') )
{
// Tell the browser the content is compressed with gzip
header ("Content-Encoding: gzip");
$page_output = gzencode($content);
$page_length = strlen($page_output);
} else {
$page_output = $content;
$page_length = strlen($page_output);
}

// header("Cache-Control: pre-check=0");
header("Cache-Control: no-cache");
// header("Pragma: ");
// header("Expires: ");

$etag = md5($content);
header('ETag: '.$etag);

header('Content-Length: '.$page_length);
ob_end_clean();
echo $page_output;%% and change it as follows: %%(php)$content = ob_get_contents();
// if host inserts banner but supports gzip we prevent gzip encoding by setting 'banner_insert' to '1' in the configuration
if (strstr ($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip') && function_exists('gzencode') && $wakka->config['banner_insert'] == '0')
{
// Tell the browser the content is compressed with gzip
header ("Content-Encoding: gzip");
$page_output = gzencode($content);
header('Content-Length: '.strlen($page_output));
} else {
$page_output = $content;
// if host inserts banner we don't want content-length calculation to prevent page truncation in the browser
if ($wakka->config['banner_insert'] == '0')
{
header('Content-Length: '.strlen($page_output));
}
}

// header("Cache-Control: pre-check=0");
header("Cache-Control: no-cache");
// header("Pragma: ");
// header("Expires: ");

$etag = md5($content);
header('ETag: '.$etag);

//header('Content-Length: '.$page_length); # moved
ob_end_clean();
echo $page_output;%%

==Other host?==
If you later move the site to another host that doesn't insert banners, just change the config to set 'banner_insert' to '0' and you'll get gzip encoding enabled again, as well as content-length calculation. Using Gzip encoding costs a little extra in CPU but saves on bandwidth.

===Refinement===
Even if after the workaround outlined here you no longer have blank or truncated pages, some pages may still not display properly, depending on content and on the browser used. //If you use Internet Explorer you may not see this but people using a more standards-compliant browser like Firefox may see the page content overlapping the page footer.// This can be fixed (at least in most cases) with a small tweak to the default stylesheet:
~- edit ##/css/wikka.css##
~- find the entry for ##.page##
~- at the end this has the rule: %%(css)height: 100%;%% ---
~- change this to: %%(css)height: auto;%% ---
//The stylesheet will be fixed in the next version of Wikka (probably 1.1.6.1)//

----
CategoryWorkaround
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki