Fehler Warning: Cannot modify header information - headers already sent by

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Fehler Warning: Cannot modify header information - headers already sent by

    Hi und schönen guten Abend euch :-)

    Ich habe bei meinem Wordpress Blog ein Problem.
    Domain1 verweist auf das Hauptverzeichnis und funkioniert alles einwandfrei.
    Domain2 verweist auch auf das gleiche Verzeichnis und da kommt nur die Fehlermeldung:

    Warning: Cannot modify header information - headers already sent by (output started at /var/www/web134128/html/guide-and-drive/index.php:3) in /var/www/web134128/html/guide-and-drive/wp-includes/ms-settings.php on line 98


    Kann mir da jemand helfen? Als Lösung hab ich das mal gefunden:
    Mögliche Lösung: Output-Buffering:
    Vor dem session_start(); noch einfügen: ob_start();
    Und ganz am Ende des Scripts: ob_end_flush(); Dann sollte es gehen.

    Bei mir gibt es aber kein session_start(); und wenn ich die dennoch hinzufüge, gibt es ein Syntaxxfehler.

    Hier ist mal der Quellcode:

    Code:
    <?php 
    /**
     * Used to set up and fix common variables and include
     * the Multisite procedural and class library.
     *
     * Allows for some configuration in wp-config.php (see ms-default-constants.php)
     *
     * @package WordPress
     * @subpackage Multisite
     * @since 3.0.0
     */
    
    /** Include Multisite initialization functions */
    require( ABSPATH . WPINC . '/ms-load.php' );
    require( ABSPATH . WPINC . '/ms-default-constants.php' );
    
    if ( defined( 'SUNRISE' ) )
        include_once( WP_CONTENT_DIR . '/sunrise.php' );
    
    /** Check for and define SUBDOMAIN_INSTALL and the deprecated VHOST constant. */
    ms_subdomain_constants();
    
    if ( !isset( $current_site ) || !isset( $current_blog ) ) {
    
        $domain = addslashes( $_SERVER['HTTP_HOST'] );
        if ( false !== strpos( $domain, ':' ) ) {
            if ( substr( $domain, -3 ) == ':80' ) {
                $domain = substr( $domain, 0, -3 );
                $_SERVER['HTTP_HOST'] = substr( $_SERVER['HTTP_HOST'], 0, -3 );
            } elseif ( substr( $domain, -4 ) == ':443' ) {
                $domain = substr( $domain, 0, -4 );
                $_SERVER['HTTP_HOST'] = substr( $_SERVER['HTTP_HOST'], 0, -4 );
            } else {
                wp_load_translations_early();
                wp_die( __( 'Multisite only works without the port number in the URL.' ) );
            }
        }
    
        $domain = rtrim( $domain, '.' );
        $cookie_domain = $domain;
        if ( substr( $cookie_domain, 0, 4 ) == 'www.' )
            $cookie_domain = substr( $cookie_domain, 4 );
    
        $path = preg_replace( '|([a-z0-9-]+.php.*)|', '', $_SERVER['REQUEST_URI'] );
        $path = str_replace ( '/wp-admin/', '/', $path );
        $path = preg_replace( '|(/[a-z0-9-]+?/).*|', '$1', $path );
    
        $current_site = wpmu_current_site();
        if ( ! isset( $current_site->blog_id ) )
            $current_site->blog_id = $wpdb->get_var( $wpdb->prepare( "SELECT blog_id FROM $wpdb->blogs WHERE domain = %s AND path = %s", $current_site->domain, $current_site->path ) );
    
        if ( is_subdomain_install() ) {
            $current_blog = wp_cache_get( 'current_blog_' . $domain, 'site-options' );
            if ( !$current_blog ) {
                $current_blog = get_blog_details( array( 'domain' => $domain ), false );
                if ( $current_blog )
                    wp_cache_set( 'current_blog_' . $domain, $current_blog, 'site-options' );
            }
            if ( $current_blog && $current_blog->site_id != $current_site->id ) {
                $current_site = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->site WHERE id = %d", $current_blog->site_id ) );
                if ( ! isset( $current_site->blog_id ) )
                    $current_site->blog_id = $wpdb->get_var( $wpdb->prepare( "SELECT blog_id FROM $wpdb->blogs WHERE domain = %s AND path = %s", $current_site->domain, $current_site->path ) );
            } else
                $blogname = substr( $domain, 0, strpos( $domain, '.' ) );
        } else {
            $blogname = htmlspecialchars( substr( $_SERVER[ 'REQUEST_URI' ], strlen( $path ) ) );
            if ( false !== strpos( $blogname, '/' ) )
                $blogname = substr( $blogname, 0, strpos( $blogname, '/' ) );
            if ( false !== strpos( $blogname, '?' ) )
                $blogname = substr( $blogname, 0, strpos( $blogname, '?' ) );
            $reserved_blognames = array( 'page', 'comments', 'blog', 'wp-admin', 'wp-includes', 'wp-content', 'files', 'feed' );
            if ( $blogname != '' && ! in_array( $blogname, $reserved_blognames ) && ! is_file( $blogname ) )
                $path .= $blogname . '/';
            $current_blog = wp_cache_get( 'current_blog_' . $domain . $path, 'site-options' );
            if ( ! $current_blog ) {
                $current_blog = get_blog_details( array( 'domain' => $domain, 'path' => $path ), false );
                if ( $current_blog )
                    wp_cache_set( 'current_blog_' . $domain . $path, $current_blog, 'site-options' );
            }
            unset($reserved_blognames);
        }
    
        if ( ! defined( 'WP_INSTALLING' ) && is_subdomain_install() && ! is_object( $current_blog ) ) {
            if ( defined( 'NOBLOGREDIRECT' ) ) {
                $destination = NOBLOGREDIRECT;
                if ( '%siteurl%' == $destination )
                    $destination = "http://" . $current_site->domain . $current_site->path;
            } else {
                $destination = 'http://' . $current_site->domain . $current_site->path . 'wp-signup.php?new=' . str_replace( '.' . $current_site->domain, '', $domain );
            }
            header( 'Location: ' . $destination );
            die();
        }
    
        if ( ! defined( 'WP_INSTALLING' ) ) {
            if ( $current_site && ! $current_blog ) {
                if ( $current_site->domain != $_SERVER[ 'HTTP_HOST' ] ) {
                    header( 'Location: http://' . $current_site->domain . $current_site->path );
                    exit;
                }
                $current_blog = get_blog_details( array( 'domain' => $current_site->domain, 'path' => $current_site->path ), false );
            }
            if ( ! $current_blog || ! $current_site )
                ms_not_installed();
        }
    
        $blog_id = $current_blog->blog_id;
        $public  = $current_blog->public;
    
        if ( empty( $current_blog->site_id ) )
            $current_blog->site_id = 1;
        $site_id = $current_blog->site_id;
    
        $current_site = get_current_site_name( $current_site );
    
        if ( ! $blog_id ) {
            if ( defined( 'WP_INSTALLING' ) ) {
                $current_blog->blog_id = $blog_id = 1;
            } else {
                wp_load_translations_early();
                $msg = ! $wpdb->get_var( "SHOW TABLES LIKE '$wpdb->site'" ) ? ' ' . __( 'Database tables are missing.' ) : '';
                wp_die( __( 'No site by that name on this system.' ) . $msg );
            }
        }
    }
    $wpdb->set_prefix( $table_prefix, false ); // $table_prefix can be set in sunrise.php
    $wpdb->set_blog_id( $current_blog->blog_id, $current_blog->site_id );
    $table_prefix = $wpdb->get_blog_prefix();
    $_wp_switched_stack = array();
    $switched = false;
    
    // need to init cache again after blog_id is set
    wp_start_object_cache();
    
    // Define upload directory constants
    ms_upload_constants();
    Vielleicht hat jemand von euch eine Lösung. Leider kenn ich mich mit PHP nicht so gut aus, ich glaube das ist ein Fehler weil ich mehrere Domains verwenden will, aber warum das kommt weis ich auch nicht.

    Vielen Vielen Dank schonmal im Vorraus

  • #2
    Hi schattenwueste,

    guck dir mal an, was der Fehler ist und in welcher Zeile der Datei der Fehler auftritt:

    Warning: Cannot modify header information - headers already sent by (output started at /var/www/web134128/html/guide-and-drive/index.php:3)
    in /var/www/web134128/html/guide-and-drive/wp-includes/ms-settings.php on line 98

    Zeile 98. Könnte das diese sein: wp_die( __( 'No site by that name on this system.' ) . $msg );

    Du kannst eine Umleitung (Weiterleitung) mit der Funktion header nur vornehmen, wenn noch keinerlei Ausgabe gemacht wurde.
    Versuch mal, anstatt header zu verwenden, ob du an den Stellen mit JavaScript weiter kommst:

    Code:
     
    <script type="text/javascript">
    <!--
    window.location.href='Neue_Adresse';
    // -->
    </script>
    Gruß
    Günni

    Kommentar


    • #3
      In index.php findet in Zeile 3 eine Ausgabe statt. Vor dem Aufruf von header() darf aber keinerlei Ausgabe gemacht werden.

      @Guenni61: JavaScript ist eine blöde Idee. Nicht jeder Browser unterstützt JavaScript und Suchmaschinen in der Regel auch nicht. Sauberer ist ein richtiger Redirect mit dem passenden HTTP Status-Code.

      Kommentar


      • #4
        Also ersteinmal vielen Danke für die Antworten.

        In index.php findet in Zeile 3 eine Ausgabe statt. Vor dem Aufruf von header() darf aber keinerlei Ausgabe gemacht werden.
        Also in der index.php findet keine Ausgabe statt.

        Quellcode der Index
        Code:
        <?php
        /**
         * Front to the WordPress application. This file doesn't do anything, but loads
         * wp-blog-header.php which does and tells WordPress to load the theme.
         *
         * @package WordPress
         */
        
        /**
         * Tells WordPress to load the WordPress theme and output it.
         *
         * @var bool
         */
        define('WP_USE_THEMES', true);
        
        /** Loads the WordPress Environment and Template */
        require('./wp-blog-header.php');
        ?>
        
        <script type="text/javascript">
        
          var _gaq = _gaq || [];
          _gaq.push(['_setAccount', 'UA-40104096-1']);
          _gaq.push(['_trackPageview']);
        
          (function() {
            var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
            ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
            var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
          })();
        
        </script>

        Die Zeile 98 in der Datei ms-settings.php ist:
        Code:
        header( 'Location: http://' . $current_site->domain . $current_site->path );
        (kompletter Code ist ja oben gepostet)
        Also habt Ihr schon mal recht wegen HEADER Ausgabe.

        Nur weis ich leider immer nochnicht was ich da ändern soll. Wie gesagt ich weis leider nicht soviel über php.

        Kommentar


        • #5
          Zitat von schattenwueste Beitrag anzeigen
          Also in der index.php findet keine Ausgabe statt.
          Doch, tut es. PHP lügt nicht.

          Ich vermute, dass du die falsche Datei betrachtest, oder dass du vor <?php ein paar Zeilenumbrüche, Leerbrüche, oder sonstige unsichtbare Zeichen hast. Es kann nur eins von den beiden sein. Etwas anderes ist nicht möglich.

          Kommentar


          • #6
            Dem Stimme ich zu, header() ist leider sehr zickig, schon ein unbedachter ZeilenUmbruch, oder ein Leerzeichen reicht aus als "Ausgabe" und blockiert ihn und das kann.sogar in einer vorher eingebundenen include Datei rumstehen

            Kommentar

            Lädt...
            X