Cannot modify header information

webbudda

Mitglied
Hallo,

habe folgende bekannte Fehlermeldung:
Cannot modify header information - headers already sent by ...

Problem, ich habe folgendes Skript.

PHP:
include pruefe_ob_user_eingeloggt_ist.php
...
mache SQL dann leite weiter

	header("Location: ziel.php);
 	exit();		
...

Das Problem ist, dass auch die oben inkludierte *.php per header umleitet. Nämlich dann wenn keine session gefunden wird. Also ist der header doppelt. Gibts da elegante Möglichkeit trotzdem beide umleitung hinzubekommen?
 
Du darfs in der Datei die du mit include reinholst keine Leeren Zeichen/ZEilen vor oder nach dem <?php ?> haben, da diese ausgegeben werden und mit der ersten Ausgabe von Zeichen ists mit dem Headerbefehl dahin.
 
Hallo,

diese Fehlermeldung tritt bei mir zum ersten Mal bei Wordpress auf. Und zwar, wenn ich z.B. Kategorien anlege oder das Theme wechsele.

Ich hab das auch schon gelesen, dass man gucken soll, ob man beim php-Tag evtl. ein Leerzeichen hat. Und ich hab auch noch gelesen, es könnt auch sein, wenn man nicht in UTF-8 gespeichert hab.

Meine Fehlermeldung ist Folgende:
Warning: Cannot modify header information - headers already sent by (output started at /home/u0082048411/public_html/blog/wp-config.php:1) in /home/u0082048411/public_html/blog/wp-includes/pluggable.php on line 865

Ich hab meine wp-config.php und diese pluggable.php nochmal ausdrücklich mit Zeichensatz UTF-8 gespeichert und neu hochgeladen. Hilft aber auch nix!

Die ersten paar Zeilen von wp-config.php und der Bereich um Zeile 865 bei pluggable.php sehen so aus:
PHP:
<?php
/** 
 * The base configurations of the WordPress.
 *
 * This file has the following configurations: MySQL settings, Table Prefix,
 * Secret Keys, WordPress Language, and ABSPATH. You can find more information by
 * visiting {@link http://codex.wordpress.org/Editing_wp-config.php Editing
 * wp-config.php} Codex page. You can get the MySQL settings from your web host.
 *
 * This file is used by the wp-config.php creation script during the
 * installation. You don't have to use the web site, you can just copy this file
 * to "wp-config.php" and fill in the values.
 *
 * @package WordPress
 */

(--> ab Zeile 860)
PHP:
	if ( $is_IIS ) {
		header("Refresh: 0;url=$location");
	} else {
		if ( php_sapi_name() != 'cgi-fcgi' )
			status_header($status); // This causes problems on IIS and some FastCGI setups
		header("Location: $location");
	}
}
endif;

if ( !function_exists('wp_sanitize_redirect') ) :
/**
 * Sanitizes a URL for use in a redirect.
 *
 * @since 2.3
 *
 * @return string redirect-sanitized URL
 **/

Und ein Fehler sagt noch, dass bei functions.php: 7 was falsch wäre... die sieht in den ersten Zeilen so aus:
PHP:
<?php if(function_exists('register_sidebar')){
register_sidebar(array('name' => 'Fantasmo'));
}?>



<?php
add_filter( 'avatar_defaults', 'YOURTHEMENAME_addgravatar' );
function YOURTHEMENAME_addgravatar( $avatar_defaults ) {
$myavatar = get_bloginfo('template_directory') . '/img/gravatar.jpg';
$avatar_defaults[$myavatar] = 'Fantasmoavatar';
return $avatar_defaults;
}?>

Weiß jemand, was ich da jetzt noch machen kann?
 
Zuletzt bearbeitet von einem Moderator:
Moin,

poste mal die komplette wp-config.php , so, wie sie auf dem Server liegt, als Dateianhang(vorher eventuelle Passwörter etc. unkenntlich machen ;))

Ich würde aber mal vermuten, dass du beim Speichern mit ByteOrderMark gespeichert hast.
Man sieht es nicht, aber da ist etwas. :-)

Lösung:speichere ohne BOM(kannst du sicher irgendwo im Editor einstellen)
 
Ich poste es mal hier so, denn wenn ichs als Anhang hochladen will, heißts "Ungültige Datei".
Ich habs auch nochmal in verschiedenen Editoren abgespeichert... im normalen Windows-Text-Editor, mit UTF-8 und in PSPAD, aber da hab ich nix gefunden, dass man noch extra was einstellen könnte.

Dooferweise wird dieser Fehler jetzt für alle möglichen Dateien gezeigt.
Ich bin nochmal bis zum Login zurückgegangen, nun kommt eben der Fehler für Functions und wp-login.php (Vor allem wp-login.php hab ich ja nie vorher angefasst, ist so ausm WP-Installationspaket).

PHP:
<?php
/** 
 * The base configurations of the WordPress.
 *
 * This file has the following configurations: MySQL settings, Table Prefix,
 * Secret Keys, WordPress Language, and ABSPATH. You can find more information by
 * visiting {@link http://codex.wordpress.org/Editing_wp-config.php Editing
 * wp-config.php} Codex page. You can get the MySQL settings from your web host.
 *
 * This file is used by the wp-config.php creation script during the
 * installation. You don't have to use the web site, you can just copy this file
 * to "wp-config.php" and fill in the values.
 *
 * @package WordPress
 */

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'db0077043');

/** MySQL database username */
define('DB_USER', 'dbuser31688');

/** MySQL database password */
define('DB_PASSWORD', 'xxxxxxxx');

/** MySQL hostname */
define('DB_HOST', 'db.hosting.de');

/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

/**#@+
 * Authentication Unique Keys.
 *
 * Change these to different unique phrases!
 * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/ WordPress.org secret-key service}
 * You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.
 *
 * @since 2.6.0
 */
define('AUTH_KEY',        'X_AtCPxIX+##{U~d],y@X::}K&d],y@X::}K&d],y@X::}K-B^)T]_h<(sG!>gO{');
define('SECURE_AUTH_KEY', 'itmOWO-Tud%J42p540#lH42p540#lH42p540#lH42p540#lH42p540#36{X-{8L|');
define('LOGGED_IN_KEY',   'Zer=T5tR;Xksm-;Xksm-;Xksm-;Xksm-@FsKvx;Xksm-;Xksm-;Xksm-;(ivMe^A');
define('NONCE_KEY',       'ZILOgF@r?;gF@r?;gF@r?;gF@r?;gF@r?;gbJ=J/&gF@r?;_DPu(K-(6pWun_6%I');

/**#@-*/

/**
 * WordPress Database Table prefix.
 *
 * You can have multiple installations in one database if you give each a unique
 * prefix. Only numbers, letters, and underscores please!
 */
$table_prefix  = 'wp2_';

/**
 * WordPress Localized Language, defaults to English.
 *
 * Change this to localize WordPress.  A corresponding MO file for the chosen
 * language must be installed to wp-content/languages. For example, install
 * de.mo to wp-content/languages and set WPLANG to 'de' to enable German
 * language support.
 */
define ('WPLANG', '');

/* That's all, stop editing! Happy blogging. */

/** WordPress absolute path to the Wordpress directory. */
if ( !defined('ABSPATH') )
	define('ABSPATH', dirname(__FILE__) . '/');

/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');
 
Der Haken ist bereits entfernt... Ich glaube ich installier das nochmal neu. Ich hatte ja ohnehin erst angefangen und es sind noch keine konkreten Inhalte drin.
Mal gucken obs dann geht:-).

So jetzt hab ichs nochmal neu installiert und auch zuerst alle PlugIns, die ich so verwenden will installiert. Es funktionierte einwandfrei...

Dann hab ich mein offline erstelltes Theme hochgeladen und aktiviert. Zuvor hatte ich alle php-Dateien die ich für die Blogseite brauche (index.php, comments.php, etc.) nochmal neu gespeichert (Haken bei "Ident Bytes bei UTF8 Hinzufügen" war weg).

Gleich nachdem aktivieren hab ich "visit site" gemacht und mir wurde es auch fehlerfrei normal angezeigt.

Dann bin zurück und hab mich sofort ausgeloggt... und schon da kamen dann wieder die Fehlermeldungen...
Warning: Cannot modify header information - headers already sent by (output started at /home/u0082048411/public_html/blog.de/wp-content/themes/blog/functions.php:7) in /home/u0082048411/public_html/blog.de/wp-login.php on line 290

Warning: Cannot modify header information - headers already sent by (output started at /home/u0082048411/public_html/blog.de/wp-content/themes/blog/functions.php:7) in /home/u0082048411/public_html/blog.de/wp-login.php on line 302

Warning: Cannot modify header information - headers already sent by (output started at /home/u0082048411/public_html/blog.de/wp-content/themes/blog/functions.php:7) in /home/u0082048411/public_html/blog.de/wp-includes/pluggable.php on line 689

Warning: Cannot modify header information - headers already sent by (output started at /home/u0082048411/public_html/blog.de/wp-content/themes/blog/functions.php:7) in /home/u0082048411/public_html/blog.de/wp-includes/pluggable.php on line 690

Warning: Cannot modify header information - headers already sent by (output started at /home/u0082048411/public_html/blog.de/wp-content/themes/blog/functions.php:7) in /home/u0082048411/public_html/blog.de/wp-includes/pluggable.php on line 691

Warning: Cannot modify header information - headers already sent by (output started at /home/u0082048411/public_html/blog.de/wp-content/themes/blog/functions.php:7) in /home/u0082048411/public_html/blog.de/wp-includes/pluggable.php on line 692

Warning: Cannot modify header information - headers already sent by (output started at /home/u0082048411/public_html/blog.de/wp-content/themes/blog/functions.php:7) in /home/u0082048411/public_html/blog.de/wp-includes/pluggable.php on line 693

Warning: Cannot modify header information - headers already sent by (output started at /home/u0082048411/public_html/blog.de/wp-content/themes/blog/functions.php:7) in /home/u0082048411/public_html/blog.de/wp-includes/pluggable.php on line 694

Warning: Cannot modify header information - headers already sent by (output started at /home/u0082048411/public_html/blog.de/wp-content/themes/blog/functions.php:7) in /home/u0082048411/public_html/blog.de/wp-includes/pluggable.php on line 697

Warning: Cannot modify header information - headers already sent by (output started at /home/u0082048411/public_html/blog.de/wp-content/themes/blog/functions.php:7) in /home/u0082048411/public_html/blog.de/wp-includes/pluggable.php on line 698

Warning: Cannot modify header information - headers already sent by (output started at /home/u0082048411/public_html/blog.de/wp-content/themes/blog/functions.php:7) in /home/u0082048411/public_html/blog.de/wp-includes/pluggable.php on line 699

Warning: Cannot modify header information - headers already sent by (output started at /home/u0082048411/public_html/blog.de/wp-content/themes/blog/functions.php:7) in /home/u0082048411/public_html/blog.de/wp-includes/pluggable.php on line 700

Warning: Cannot modify header information - headers already sent by (output started at /home/u0082048411/public_html/blog.de/wp-content/themes/blog/functions.php:7) in /home/u0082048411/public_html/blog.de/wp-includes/pluggable.php on line 703

Warning: Cannot modify header information - headers already sent by (output started at /home/u0082048411/public_html/blog.de/wp-content/themes/blog/functions.php:7) in /home/u0082048411/public_html/blog.de/wp-includes/pluggable.php on line 704

Warning: Cannot modify header information - headers already sent by (output started at /home/u0082048411/public_html/blog.de/wp-content/themes/blog/functions.php:7) in /home/u0082048411/public_html/blog.de/wp-includes/pluggable.php on line 705

Warning: Cannot modify header information - headers already sent by (output started at /home/u0082048411/public_html/blog.de/wp-content/themes/blog/functions.php:7) in /home/u0082048411/public_html/blog.de/wp-includes/pluggable.php on line 706

Warning: Cannot modify header information - headers already sent by (output started at /home/u0082048411/public_html/blog.de/wp-content/themes/blog/functions.php:7) in /home/u0082048411/public_html/blog.de/wp-includes/pluggable.php on line 865

Die Zeilen von wp-login.php auf die sich die Meldungen beziehen lauten:
PHP:
header('Content-Type: '.get_bloginfo('html_type').'; charset='.get_bloginfo('charset'));
PHP:
setcookie(TEST_COOKIE, 'WP Cookie check', 0, COOKIEPATH, COOKIE_DOMAIN);

Die Zeilen, die in pluggable.php genannt werden lauten:
PHP:
setcookie(AUTH_COOKIE, ' ', time() - 31536000, ADMIN_COOKIE_PATH, COOKIE_DOMAIN);
	setcookie(SECURE_AUTH_COOKIE, ' ', time() - 31536000, ADMIN_COOKIE_PATH, COOKIE_DOMAIN);
	setcookie(AUTH_COOKIE, ' ', time() - 31536000, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN);
	setcookie(SECURE_AUTH_COOKIE, ' ', time() - 31536000, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN);
	setcookie(LOGGED_IN_COOKIE, ' ', time() - 31536000, COOKIEPATH, COOKIE_DOMAIN);
	setcookie(LOGGED_IN_COOKIE, ' ', time() - 31536000, SITECOOKIEPATH, COOKIE_DOMAIN);

	// Old cookies
	setcookie(AUTH_COOKIE, ' ', time() - 31536000, COOKIEPATH, COOKIE_DOMAIN);
	setcookie(AUTH_COOKIE, ' ', time() - 31536000, SITECOOKIEPATH, COOKIE_DOMAIN);
	setcookie(SECURE_AUTH_COOKIE, ' ', time() - 31536000, COOKIEPATH, COOKIE_DOMAIN);
	setcookie(SECURE_AUTH_COOKIE, ' ', time() - 31536000, SITECOOKIEPATH, COOKIE_DOMAIN);

	// Even older cookies
	setcookie(USER_COOKIE, ' ', time() - 31536000, COOKIEPATH, COOKIE_DOMAIN);
	setcookie(PASS_COOKIE, ' ', time() - 31536000, COOKIEPATH, COOKIE_DOMAIN);
	setcookie(USER_COOKIE, ' ', time() - 31536000, SITECOOKIEPATH, COOKIE_DOMAIN);
	setcookie(PASS_COOKIE, ' ', time() - 31536000, SITECOOKIEPATH, COOKIE_DOMAIN);
PHP:
		header("Location: $location");

Die Zeile aus functions.php lautet:
PHP:
<?php
add_filter( 'avatar_defaults', 'YOURTHEMENAME_addgravatar' );

Im Theme sind alle PHPs und bei den allgemeinen Wordpress-Dateien auf alle Fälle die genannten (pluggable, wp-login) vorher nochmal neu in PSPAD abgespeichert und hochgeladen worden.

Es liegt also ziemlich sicher nur an meinem Theme und seinen Dateien... vielleicht ist eine ganz andere Datei fehlerhaft, die gar nicht in den Fehlermeldungen genannt wird
Meine header.php sieht übrigens so aus, falls das daran liegen könnte:
PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
<meta name="generator" content="WordPress <?php bloginfo('version'); ?>" />

<title>
	<?php
		if(is_home()) {
		echo bloginfo('name').' - Mein Blog ist toll';
		} elseif(is_category()) {
		echo 'Mein Blog -  ';
		wp_title(' ', true, '');
		} elseif(is_single()) {
		echo 'Mein Blog -  ';
 		wp_title(' ', true, '');
		}
		elseif(is_archive()){
		echo 'Mein Blog-Archive durchsuchen f&uuml;r';
		wp_title(' ', true, '');
		} elseif(is_search()) {
		echo 'Mein Blog Suchergebnisse f&uuml;r "'.$s.'"';
		} elseif(is_404()) {
		echo '404 - Hoppla!';
		} else {
		bloginfo('name'); wp_title('-', true, '');
		}
		?>
</title>

<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="<?php bloginfo('rss2_url'); ?>" />
<link rel="pingback" href="<?php bloginfo('pingback url'); ?>" />

<?php if ( is_singular() ) wp_enqueue_script( 'comment-reply' ); ?>

<?php wp_head(); ?>

<link rel="shortcut icon" href="<?php bloginfo('template_directory'); ?>/img/favicon.ico" />

</head>
<body id="home">

          <div id="container">
			               <ul id="skip-links">
			                 <li><a href="#navigation" accesskey="n">Skip to navigation [n]</a></li>
			                 <li><a href="#content" accesskey="c">Skip to content [ c]</a></li>
			                 <li><a href="#label" accesskey="t">Skip to topnavigation [t]</a></li>
			               </ul>
		<div id="header">
			<div id="logo">	
				<h1><a href="#">Mein Blog</a></h1>
			</div> <!--logo-->
			<div id="navigation">
				<ul>
                              		<li><a href="#">Home</a></li>
                               	  	<li><a href="#">Punkt 1</a></li>
                               	  	<li><a href="#">Punkt 2</a></li>
                         	</ul>
			</div> <!--navigation-->
		</div> <!--header-->
(<a>-hrefs bei der Navigation will ich später noch ergänzen)

Für den entscheidenden (lang anhaltenden) Hinweis lasse ich 7 EUR springen!
 
Zurück