Seite 1 von 2

Gzip und Zlib

Verfasst: 23.09.2005 23:23
von Gumfuzi
Hallo Leute,

bin aufgrund einer Fehlermeldung (die nur beim Verfassen eines KB-Artikels kommt, sonst nirgends) auf folgenden KB-Eintrag gestoßen:
http://www.phpbb.com/kb/article.php?article_id=130

Die Fehlermeldung:
Warning: ob_start(): output handler 'ob_gzhandler' cannot be used twice in /www/htdocs/xxxxx/phpBB2/includes/page_header.php on line 45
Hier der Bereich der page_header.php:

Code: Alles auswählen

//
// gzip_compression
//
$do_gzip_compress = FALSE;
if ( $board_config['gzip_compress'] )
{
	$phpver = phpversion();

	$useragent = (isset($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) ? $HTTP_SERVER_VARS['HTTP_USER_AGENT'] : getenv('HTTP_USER_AGENT');

	if ( $phpver >= '4.0.4pl1' && ( strstr($useragent,'compatible') || strstr($useragent,'Gecko') ) )
	{
		if ( extension_loaded('zlib') )
		{
			ob_start('ob_gzhandler');
		}
	}
	else if ( $phpver > '4.0' )
	{
		if ( strstr($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip') )
		{
			if ( extension_loaded('zlib') )
			{
				$do_gzip_compress = TRUE;
				ob_start();
				ob_implicit_flush(0);

				header('Content-Encoding: gzip');
			}
		}
	}
}
Die o.a. Fix hilft bei mir nix. Habe mal den Hoster angeschrieben (früher funzte die KB ja auch)

Wenn ich nur das Zlib (das auf dem Server aktiviert ist) laufen lasse, ohne Gzip, wird dann trotzdem in etwas soviel komprimiert als wenn ich beides laufen lasse? Bringt das überhaupt etwas, wenn ich beides laufen lasse?

Verfasst: 24.09.2005 20:58
von Gumfuzi
Also lt. Hoster liegts nicht an dem Server...

Was kann ich da noch tun?

Verfasst: 25.09.2005 14:25
von itst
Verlinke mal Deine page_header.php, da muss irgendwo der Wurm drin sein.

Verfasst: 25.09.2005 20:11
von Gumfuzi
Hi!

Danke, daß Du Dir das ansiehst. Wie gesagt, die Meldung kommt nur, wenn ich einen neuen Eintrag in der Knowledge Base erstellen will. Gzip habe ich auch testweise deaktiviert, da kamen dann drei Zeilen mit Fehlermeldungen.

Hier die Dateien:
http://www.deskmodder.de/phpBB2/diverse ... header.txt
http://www.deskmodder.de/phpBB2/diverses/kb_add.txt
http://www.deskmodder.de/phpBB2/diverses/kb_header.txt

Danke vielmals im Voraus!

Verfasst: 26.09.2005 12:17
von itst
Hmm, das wars nicht. Aus der Fehlermeldung geht hervor ("cannot be used twice") das ob_start() doppelt aufgerufen wird. Allerdings finde ich den zweiten Aufruf nicht.

Jetzt ist das ganze aber auch nur eine Warning.

Von daher würde ich vorschlagen, Warnings zu unterdrücken. Schau dazu in die common.php, in Zeile 36 und nimm das E_WARNING aus dem error_reporting()-Aufruf:

Code: Alles auswählen

error_reporting  (E_ERROR | E_PARSE);
Tjoa, und dann solltest Du in allen PHP-Dateien, die für die Knowledge-Base geändert oder hinzugefügt wurden, nach "ob_start" bzw "ob_gzhandler" durchsuchen. Eigentlich dürfte man diesen Aufruf nur in der page_header.php finden. Sollte das woanders auftauchen, dann verlinke die Datei hier, dann sehen wir weiter.

Verfasst: 26.09.2005 20:43
von Gumfuzi
OK, ich habe mal die Dateien durchsucht:
ob_start:
- admin_db_maintenance.php (wird nie aufgerufen)
- page_header_admin.php (wird nur im ACp aufgerufen)
- pager_header.php (2x, aber durch die if-Abfrage nie zusammen ausgeführt)

ob_gzhandler:
- page_header_admin
- page_header

Darum dachte ich zuerrst, es liegt am Server, aber all-inkl. sagte mir, daß es nicht daran liegt.

BTW: kann es sein, daß durch den Fehler Teile der Seite nicht angezeigt werden? (beim Beitragschreiben in der KB sieht man nur mehr die Smilies auf der ganzen Breite und nicht mehr die Textbox, etc.) - habe nur den Smilies-Cat.Mod eingebaut, der allerdings nicht die KB-Dateien veränderte. Und lt. Template müsste die gezeigte Seite anders aussehen...

Verfasst: 26.09.2005 23:06
von itst
Kann schon sein, das wir es hier mir einem Verschlucker zu tun haben. Hast Du das error_reporting mal geändert?

Verfasst: 27.09.2005 01:41
von Pyramide
Vielleicht wird page_header.php aus irgendeinem Grund zweimal eingebunden? Versuch mal, dort

Code: Alles auswählen

print_r(debug_backtrace());
einzufügen, dann sollte dir ein Stracktrace angezeigt werden (also welche Funktion von wo aufgerufen wurde).

Verfasst: 27.09.2005 12:23
von Gumfuzi
Hi,

das mit dem Error Reporting habe ich geändert: die Meldung ist weg, die Seite sieht aber natürlich gleich aus (nur die Smilies zu sehen, keine Textbox, etc.)

@Pyramide:
werde ich am Abend gleich probieren, wenn ich wieder zuhause bin.
Sehen den Report dann alle User? Wenn ja, dann teste ich das lieber auf meinem Testfroum (wo die Dateien die gleichen sind und wo ich das Prob auch habe).
Den dann kommenden Report werde ich hier dann posten.

Verfasst: 27.09.2005 20:45
von Gumfuzi
@Pyramide:
habe das eingefügt, die Meldung oberhalb des Headers:
Array ( [0] => Array ( [file] => /www/htdocs/dmtest/phpBB2/includes/kb_add.php [line] => 36 [function] => include ) [1] => Array ( [file] => /www/htdocs/dmtest/phpBB2/kb.php [line] => 164 [args] => Array ( [0] => /www/htdocs/dmtest/phpBB2/includes/kb_add.php ) [function] => include ) )
Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/dmtest/phpBB2/includes/page_header.php:30) in /www/htdocs/dmtest/phpBB2/includes/page_header.php on line 618

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/dmtest/phpBB2/includes/page_header.php:30) in /www/htdocs/dmtest/phpBB2/includes/page_header.php on line 620

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/dmtest/phpBB2/includes/page_header.php:30) in /www/htdocs/dmtest/phpBB2/includes/page_header.php on line 621
und unter dem Header:
Array ( [0] => Array ( [file] => /www/htdocs/dmtest/phpBB2/includes/functions_post.php [line] => 918 [function] => include ) [1] => Array ( [file] => /www/htdocs/dmtest/phpBB2/includes/kb_add.php [line] => 77 [function] => generate_smilies ) [2] => Array ( [file] => /www/htdocs/dmtest/phpBB2/kb.php [line] => 164 [args] => Array ( [0] => /www/htdocs/dmtest/phpBB2/includes/kb_add.php ) [function] => include ) )
Warning: ob_start(): output handler 'ob_gzhandler' cannot be used twice in /www/htdocs/dmtest/phpBB2/includes/page_header.php on line 45

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/dmtest/phpBB2/includes/page_header.php:30) in /www/htdocs/dmtest/phpBB2/includes/page_header.php on line 618

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/dmtest/phpBB2/includes/page_header.php:30) in /www/htdocs/dmtest/phpBB2/includes/page_header.php on line 620

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/dmtest/phpBB2/includes/page_header.php:30) in /www/htdocs/dmtest/phpBB2/includes/page_header.php on line 621
da steht nur "Function", aber nicht, welche Funktion das ist, oder bin ich blind?