Warning: Cannot modify header information – Impossible de trouver la solution

  • WordPress :5.2
  • Statut : non résolu
12 sujets de 1 à 12 (sur un total de 12)
  • Auteur
    Messages
  • #2273875
    Niki_Fafa
    Participant
    Initié WordPress
    6 contributions

    Bonjour à tous,

    Ma configuration WP actuelle :

    • – Version de WordPress : 5.2.2
    • – Version de PHP/MySQL : 7.2.21 / 5.7.27
    • – Thème utilisé : Eduin
    • – Thème URI : https://banyanthemes.com/themes/eduin/
    • – Extensions en place : Akismet Anti-Spam (4.1.2), Coming Soon Page & Maintenance Mode by SeedProd (5.0.26), Contact Form 7 (5.1.4), Duplicate Post (3.2.3), Eduin Plugin (1.0), Forum_wordpress_fr (4.2), HappyForms (1.8.14), KingComposer (2.8.2), LearnPress (3.2.6.3), LearnPress – Course Review (3.0.5), Loco Translate (2.3.0), Mailchimp for WordPress (4.5.3), PHP Compatibility Checker (1.5.0), Really Simple SSL (3.2.3), Smart Slider 3 (3.3.21), WooCommerce (3.7.0), WordPress Importer (0.6.4)
    • – Adresse du site : Site pour un client, confidentiel pour le moment.
    • – Nom de l’hébergeur : Apache

     

    Voici mon petit soucis :

    Je suis assez novice en code, je me lance dans un site sous wordpress avec une possibilité d’inscription de membres.
    Mon site tourne bien dans l’ensemble, hormis pour une partie, cette fameuse inscription de nouveau utilisateurs.

    En effet, lorsqu’un utilisateur s’inscrit, la fameuse erreur “Warning: Cannot modify header information” apparait.
    Le nouvel utilisateur est bien inscrit, sauf qu’entre son enregistrement et son dashboard, il ‘y a pas de redirection et les messages d’erreur suivants s’affichent :

    Twitter UsernameFacebook URLGoogle+ URLLinkedininstagramUser Designation
    Warning: Cannot modify header information – headers already sent by (output started at /homepages/23/d555438456/htdocs/ideal-formation-2/wp-includes/l10n.php:322) in /homepages/23/d555438456/htdocs/ideal-formation-2/wp-includes/pluggable.php on line 928

    Warning: Cannot modify header information – headers already sent by (output started at /homepages/23/d555438456/htdocs/ideal-formation-2/wp-includes/l10n.php:322) in /homepages/23/d555438456/htdocs/ideal-formation-2/wp-includes/pluggable.php on line 929

    Warning: Cannot modify header information – headers already sent by (output started at /homepages/23/d555438456/htdocs/ideal-formation-2/wp-includes/l10n.php:322) in /homepages/23/d555438456/htdocs/ideal-formation-2/wp-includes/pluggable.php on line 930

    Warning: Cannot modify header information – headers already sent by (output started at /homepages/23/d555438456/htdocs/ideal-formation-2/wp-includes/l10n.php:322) in /homepages/23/d555438456/htdocs/ideal-formation-2/wp-content/plugins/learnpress/inc/lp-core-functions.php on line 2084

    Warning: Cannot modify header information – headers already sent by (output started at /homepages/23/d555438456/htdocs/ideal-formation-2/wp-includes/l10n.php:322) in /homepages/23/d555438456/htdocs/ideal-formation-2/wp-includes/pluggable.php on line 1251

    Warning: Cannot modify header information – headers already sent by (output started at /homepages/23/d555438456/htdocs/ideal-formation-2/wp-includes/l10n.php:322) in /homepages/23/d555438456/htdocs/ideal-formation-2/wp-includes/pluggable.php on line 1254

     

    J’ai évidemment écumé tous les internets toute la journée afin de trouver la solution à ce problème, mais en vain…
    J’ai vérifié qu’il n’y avait aucun espace avant et après les balises <?php […] ?>
    J’ai vérifié que le fichier fautif était bien en UTF8 sans BOM…

    Le seul truc qui a “fonctionné” (à moitié), c’est de retirer le “echo” de la ligne indiquée du fichier fautif.
    Mais du coup, plus aucun texte ne s’affiche sur la page d’inscription. Le soucis viendrait peut-être de cette requête “echo”? mais vu que je n’y connais pas grand chose en code, je préfère vous demander de l’aide avant de faire des bêtises…

    Voici la ligne #322 du fichier l10n.php :

    echo esc_html( translate( $text, $domain ) );

    function esc_html_e( $text, $domain = 'default' ) {
    	echo esc_html( translate( $text, $domain ) );
    }

     

    Et voici les lignes des fichiers “bloqués” :

    lignes 928 / 929 / 930 du fichier pluggable.php :

    setcookie( $auth_cookie_name, $auth_cookie, $expire, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN, $secure, true );
    		setcookie( $auth_cookie_name, $auth_cookie, $expire, ADMIN_COOKIE_PATH, COOKIE_DOMAIN, $secure, true );
    		setcookie( LOGGED_IN_COOKIE, $logged_in_cookie, $expire, COOKIEPATH, COOKIE_DOMAIN, $secure_logged_in_cookie, true );

     

    Ligne 2084 du fichier lp-core-functions.php   :
    setcookie( $name, ”, time() – YEAR_IN_SECONDS, COOKIEPATH ? COOKIEPATH : ‘/’, COOKIE_DOMAIN );

    function learn_press_remove_cookie( $name ) {
    	setcookie( $name, '', time() - YEAR_IN_SECONDS, COOKIEPATH ? COOKIEPATH : '/', COOKIE_DOMAIN );
    	if ( array_key_exists( $name, $_COOKIE ) ) {
    		unset( $_COOKIE[ $name ] );
    	}
    }

     

    Lignes 1251 / 1254 du fichier pluggable.php :
    1251 : header( “X-Redirect-By: $x_redirect_by” );
    1254 : header( “Location: $location”, true, $status );

    if ( is_string( $x_redirect_by ) ) {
    			header( "X-Redirect-By: $x_redirect_by" );
    		}
    
    		header( "Location: $location", true, $status );
    
    		return true;
    	}
    endif;

    Merci d’avance pour votre aide !

    • Ce sujet a été modifié le il y a 1 mois par  Niki_Fafa.
    • Ce sujet a été modifié le il y a 1 mois par  Niki_Fafa.
    #2273937
    Li-An
    Modérateur
    Maître WordPress
    22361 contributions

    Bonjour, une extension ou une fonction du thème est en conflit avec WP. Il faudrait faire des tests pour découvrir laquelle. Si vous êtes un pro, je vous suggère déjà de vous passer de Really Simple SSL pour passer le site réellement en https.

    #2273950
    Niki_Fafa
    Participant
    Initié WordPress
    6 contributions

    Merci Li-An pour ces astuces 🙂

    Oui, j’avais déjà désactivé tous les plugins possibles, mais ça n’a pas été concluant… Je vais peut-être retenter, voir si je ne suis pas passée à côté de quelque chose

    Concernant le https, je ne connait pas bien la manip encore, mon client à son site actuel toujours en ligne, je développe la V02 dans un autre dossier de son serveur, mais je ne sais pas si je peux appliquer dès maintenant la connexion sécurisée en sachant que je vais devoir rediriger son url sur ce nouveau site.

    #2273969
    Li-An
    Modérateur
    Maître WordPress
    22361 contributions

    Ça peut aussi venir d’une fonction du thème.

    #2274099
    ferman
    Participant
    Maître WordPress
    1001 contributions

    Bonjour,

    Certains pensent qu’on peut désactiver l10n et donnent plusieurs méthodes 1 2 simples pour ça (références un peu anciennes). Essayez pour voir l’effet produit dans votre cas.

    #2277011
    Niki_Fafa
    Participant
    Initié WordPress
    6 contributions

    Bonjour à tous et merci pour votre aide !

    En effet, le thème installé embarque un plugin obligatoire.
    Et en désactivant celui-ci le bugg ne se produit plus.
    Le hic c’est que j’en ai besoin pour que le site fonctionne, j’ai donc inspecté toutes les pages du plugins, et à priori dans une des pages php cette partie de code serait peut-être à l’origine du conflis :

    // Add user profile field
    function eduin_contact_methods( $profile_fields ) {
        
        // Add new fields
        $profile_fields['twitter'] = esc_html_e( 'Twitter Username', 'eduin' );
        $profile_fields['facebook'] = esc_html_e( 'Facebook URL', 'eduin' );
        $profile_fields['gplus'] = esc_html_e( 'Google+ URL', 'eduin' );
        $profile_fields['linkedin'] = esc_html_e( 'Linkedin', 'eduin' );
        $profile_fields['instagram'] = esc_html_e( 'instagram', 'eduin' );
        $profile_fields['designation'] = esc_html_e( 'User Designation', 'eduin' );
    
        return $profile_fields;
    }
    add_filter( 'user_contactmethods', 'eduin_contact_methods' );

    Effectivement en fermant l’accolade APRÈS  add_filter( ‘user_contactmethods’, ‘eduin_contact_methods’ );   , il n’y a plus d’erreur. (je précise que ce code se trouve en fin de page, et qu’il n’y a aucun autre code écris ensuite)
    En espérant que ce petit changement n’aura pas d’impact ailleurs sur le site…

    Merci encore pour votre aide 🙂

    • Cette réponse a été modifiée le il y a 3 jours et 11 heures par  Niki_Fafa.
    #2277018
    Li-An
    Modérateur
    Maître WordPress
    22361 contributions

    Le thème n’a pas été mis à jour depuis un an, il y a un nombre ridicule de ventes (un signe qu’il vaut mieux éviter) mais le développeur est toujours actif. Essayez plutôt de le contacter plutôt que de bidouiller vous-même sans savoir.

    #2277024
    Niki_Fafa
    Participant
    Initié WordPress
    6 contributions

    Oui, j’avais hésité avec un thème beaucoup plus connu, mais mon choix s’est porté sur certaines fonctionnalités qui normalement devaient me faire gagner du temps… je regrette beaucoup aujourd’hui, j’ai au final perdu plus de temps à tenter de résoudre des buggs qu’autre chose… bref

    J’ai envoyé un énième message au dev du thème, je verrai bien.

    Merci en tout cas 🙂

    #2277025
    ferman
    Participant
    Maître WordPress
    1001 contributions

    Bonjour,

    J’étais étonné et viens de parcourir le net assez rapidement. Je n’avais jamais vu de “}” englobant un add_filter ou add_action.  Normalement ces éléments sont distincts de la fonction elle-même. Je n’ai pas trouvé d’exemple et donc j’ai essayé chez moi sur quelques fonctions. Et le réponse est: “des fois ça marche et des fois pas” ce qui convient parfaitement au normand que je suis mais n’est pas très rationnel.  Et pour être honnête ça ne marche pas souvent (4 fonctions essayées, ça marche pour une seule).

    En fait, le fait de déplacer l’accolade a annulé 3 fois sur 4 la fonction (sans message d’erreur, simplement il n’y a plus d’effet). Donc j’espère que pour vous ce sera bon mais je suis un peu pessimiste (à moins que la fonction ne soit pas nécessaire, bien sûr).

    Est-ce que ça annule le filtre? le “hook” user_contact_methods? Je ne suis pas expert php et ne sais pas. Voyez vous les nouveaux champs ajoutés par le plugin?

    #2277026
    Niki_Fafa
    Participant
    Initié WordPress
    6 contributions

    Et bien en vérifiant l’utilité de cette fonction, il se trouve que ça ajoute une option dans le backoffice du wordpress, sur les profils utilisateurs.
    Cela permet d’ajouter des champs de social media supplémentaires. En soit je n’en ai pas besoin, mais je ne voudrais pas faire un code “sale” et possiblement créer une faille de sécurité.
    Ne m’y connaissant pas en code, j’y vais à tatons et je ne voudrais pas faire d’erreur…
    Ici effectivement cette bidouille fonctionne par chance, mais bon, si je pouvais trouver la vraie source du problème et la résoudre proprement ce serait un gros plus 🙂

    #2277027
    ferman
    Participant
    Maître WordPress
    1001 contributions

    Plus proprement, si la fonction ne sert pas il vaut mieux la “commenter” et même la supprimer (en en gardant une copie quelque part, on ne sait jamais).

    Vous réalisez qu’ à chaque mise à jour du thème il faudra refaire la même manoeuvre (soit déplacer le  }), soit re-commenter ou re-supprimer la fonction).

    Pour l’explication, elle risque de se faire attendre.

    • Cette réponse a été modifiée le il y a 3 jours et 9 heures par  ferman.
    • Cette réponse a été modifiée le il y a 3 jours et 9 heures par  ferman.
    • Cette réponse a été modifiée le il y a 3 jours et 9 heures par  ferman.
    #2277042
    Niki_Fafa
    Participant
    Initié WordPress
    6 contributions

    Oui c’est ce que j’ai fait entre temps, en attendant d’avoir une éventuelle réponse de l’auteur du thème.
    Pour le moment ça suffira comme ça, au moins le site tourne bien 🙂

    Encore merci !

12 sujets de 1 à 12 (sur un total de 12)
  • Vous devez être connecté pour répondre à ce sujet.