Contacts

Comment trouver et surmonter BOM - une erreur désagréable dans WordPress. Solution du problème "Impossible d'ajouter des informations d'en-tête - Les en-têtes déjà envoyés" des en-têtes d'information imibre

Une fois, aller à son blog, j'ai été surpris de trouver une erreur incompréhensible, quelque chose comme:

AVERTISSEMENT: impossible de modifier les informations d'en-tête - les en-têtes déjà envoyés par (sortie démarré à /xxxxxxxx/wp-config.php:

Et il est impossible d'aller au panneau d'administration. Je suis immédiatement allé vérifier que non ainsi avec le fichier wp-config.php. Tout était en place, les mots de passe de la base de données sont corrects. Je pensais que c'était - secoué encore)) mais encore une fois, aucun signe de vandalisme sur FTP n'a été remarqué. La chose la plus étrange (ceci est finalement confondue à la fin) que seul un lien vers le site sans www n'a pas fonctionné ni au contraire (je ne me souviens pas exactement). Il a commencé à frapper l'hôte, surveillez les paramètres de l'administration de domaine - en général, beaucoup de choses.

Et il s'est avéré que tout est beaucoup plus facile - au début du fichier de configuration était un bom - Marqueur (signature) pour les fichiers UTF-8. C'est pourquoi l'erreur ci-dessus est apparue. Donc, cela ne vous arrive pas d'abord à utiliser les éditeurs de code qui ne mettent pas du tout cette signature ou si elle est nécessaire avant d'enregistrer le fichier.

Dans certains éditeurs de texte, vous pouvez trouver dans la case à cocher "Inclure Unicode Signature (BOM)", "Ajouter une marque d'ordre d'octet" ou similaire à celui-ci. Sinon, sans avoir à désactiver une option inutile dans un programme particulier, il n'est pas recommandé de l'utiliser. Sur des forums spécialisés, vous trouverez une liste de bons éditeurs de texte, il est Notepad2, Pspad, Unicateur, Notepad ++. À propos de la dernière chose qu'ils écrivent beaucoup, un outil assez puissant. J'ai du hasard sur l'ordinateur en stock un alternatif éditeur - Akelpad.- c'est pour ces tâches et s'appliquer.

Il convient de noter qu'un autre moment - l'erreur de bogue peut être non seulement dans le fichier wp-config.php. De plus, lorsque la sortie de la sortie d'avertissement est désactivée, vous ne verrez pas où le problème a glissé. Dans de tels cas (bien, tous les autres), je recommanderais d'utiliser un simple script pour rechercher des fichiers avec BOM. Pour le développement devrait remercier Yuri Belotitsky.

L'utilisation du script est très simple.

  1. Fichier nécessaire
  2. Versez-le sur le serveur FTP dans le répertoire racine. Si WordPress n'est pas installé à la racine du site (et dans le dossier de blog, par exemple), le script doit être placé dans le répertoire dans lequel WordPress réside, et il en est également lancé.
  3. Démarrage est très simple - vous composez le lien HTTP dans la barre d'adresse de la barre d'adresse: // Vash. Site / Find_Bom.php

En conséquence, obtenez une liste de fichiers défectueux. Au fait, pour la vitesse de travail, le script ne vérifie que les répertoires où les utilisateurs ont tendance à verser des fichiers - racine / contenu WP / Thèmes et / WP-Contenu / Plugins.

C'est fondamentalement ça. Dans quelle mesure il était difficile de résoudre un problème aussi simple. J'espère que vous vous aiderez une petite expérience, et maintenant lorsque l'avertissement approprié apparaît, vous saurez quoi faire :) Si vous ne pouvez pas corriger un fichier particulier de BOM, vous pouvez simplement verser un nouveau sur la distribution WordPress.

P.s. Pour les nouveaux mariés, le site approprié est l'organisation de banquets et la solution de toutes les questions relatives au mariage.

Étonnamment, quelle est la petite erreur peut entraîner une condition entièrement inopérable de votre site sur WordPress. Nous disons, bien sûr, sur l'erreur d'avertissement bien connue WordPress AVERTISSEMENT: Impossible de modifier les informations d'en-tête - Les en-têtes déjà envoyés par Pluggable.php (ne peuvent pas modifier les informations de titre). Si vous êtes l'un de ceux qui ont rencontré cette erreur, vous êtes venu à. Dans ce que nous discuterons, tout d'abord, la raison de l'apparition de cette erreur et de regarder les solutions qui nous permettront de résoudre finalement le problème.

Avant le début, assurez-vous que ce qui suit est:

  • Accès à votre panneau de commande d'hébergement ou à votre accès FTP

Comment ne peut pas modifier les informations d'en-tête Arise - les en-têtes déjà envoyés par

Considérons un exemple de cette erreur pour mieux comprendre les raisons. L'erreur apparaît généralement dans ce formulaire:

AVERTISSEMENT: impossible de modifier les informations d'en-tête - Les en-têtes déjà envoyés par (sortie démarré à /public_html/wp-content/plugins/my-plugin/my-funcer.php:#) dans /public_html/wp-includes/pluggable.php en ligne #

Comme vous pouvez le constater, l'erreur est mentionnée deux fichiers. Le premier fichier (dans notre cas: ma-fonction.php. Placé dans / public_html // wp-contenu / plugins / my-plugin /) à la tête des suspects. Ceci est notre code d'utilisateur conçu pour modifier la fonctionnalité du noyau fourni par WordPress. La fonctionnalité du noyau est dans le fichier pluggable.php. (Fichier de noyau WordPress, constante pour tout paramètre WordPress). En d'autres termes, le problème dans le premier fichier, qui n'autorise pas correctement le deuxième fichier.

La cause principale de l'erreur est inutile lacunes dans le premier fichier. Ce sont des espaces en haut ou en bas du fichier, des espaces inutiles n'importe où dans le fichier ou même des espaces dans des balises PHP . Au fait, en raison du fait que les programmeurs peuvent (et habituellement) tuer par erreur des espaces inutiles dans leur code, cette erreur se pose le plus souvent que vous ne pouvez vous attendre. Le numéro de chaîne spécifié dans le message d'erreur fait référence à l'emplacement du problème - cela aidera à éliminer le problème plus rapide et sans faille.

Cornôte Modifier la correction d'erreur d'information d'en-tête - Les en-têtes déjà envoyés par

Maintenant que vous savez ce qui provoque une erreur, vous pouvez aller le réparer. Nous vous montrerons deux options pour éliminer le problème que vous pouvez essayer séparément ou à son tour, si séparément n'a pas aidé.

Option 1 - Modification du fichier défectueux

Première option de résolution d'erreurs AVERTISSEMENT: ne peut pas modifier les informations d'en-tête - Fichier de correction manuelle avec erreur. Vous avez déjà les informations nécessaires en présence, pour trouver un problème dans le message d'erreur lui-même (rappelez-vous, il s'agit du premier fichier du message). Tout ce qui sera nécessaire, c'est ouvrir ce fichier FTP à l'aide du client comme FileZilla ou via un gestionnaire de fichiers.

Essentiellement, tout sur ce que vous devez prendre en charge est de supprimer des lacunes supplémentaires / des chaînes vides dans le fichier. Un bon endroit pour démarrer sera une chaîne # mentionnée dans un message d'erreur. Depuis cet endroit, vous pouvez continuer l'analyse du reste du fichier à la recherche d'autres espaces inutiles ou des lignes vides jusqu'à la fin du document.

Assurez-vous de l'exactitude de l'écriture des étiquettes PHP initiales et finales. Ne devrait pas être un espace avant ou après la balise , comme tag ?> . En outre, la dernière ligne du code ne doit pas être complétée par un espace ou une chaîne inutile.

Dans la capture d'écran ci-dessous, vous pouvez voir le fichier wp-config.php.dans lequel il y a des lacunes avant la première étiquette PHP.

RAPIDE: Dans de nombreux éditeurs de texte, supprimer des lacunes inutiles peut être automatiquement. Par exemple, pour supprimer des espaces inutiles dans l'éditeur ATOM, sélectionnez le code entier et allez à P ackages -\u003e Espace -\u003e Supprimer la tradition Whitespace.

Option 2 - Remplacez le fichier défectueux

Bien entendu, la modification d'un certain nombre de fichiers avec des erreurs peut causer des difficultés. Les fichiers peuvent être liés au plugin ou à la rubrique que vous venez d'installer sur votre site Web ou même peuvent être les fichiers WordPress Kernel.

Si l'erreur est vraiment causée par un plugin ou le sujet, tout ce qui doit être fait est de le réinstaller. Cette action aide dans la plupart des cas. D'autre part, si le fichier WordPress Kernel provoque l'erreur, la meilleure solution pour prendre une copie WordPress propre et remplacer le fichier par une erreur dans votre installation sur la même version. Cela garantira que le fichier défectueux est restauré à son état d'origine, tandis que le reste de l'installation de votre site Web WordPress restera en sécurité et en préservation. Maintenant, juste redémarrer la page et assurez-vous que l'erreur est corrigée.

En conclusion

Que l'extrait de code dans le fichier inséré, ajoutez un nouveau plug-in / thème ou écrit le code manuellement, il existe un risque d'espaces excédentaires dans le fichier. Ces lacunes apparemment innocentes peuvent envelopper une erreur WordPress AVERTISSEMENT: impossible de modifier les informations d'en-tête - les en-têtes déjà envoyés par.

Dans ce guide, nous avons examiné comment corriger de telles erreurs, et maintenant votre site fonctionne à nouveau comme cela devrait être. Plus de manuels WordPress peuvent être trouvés.

Cette erreur est facile à réparer.
Souvent, le même message apparaît au début des sessions, dans un libellé légèrement différent:
AVERTISSEMENT: Impossible de session Cookie - Les en-têtes déjà envoyés
AVERTISSEMENT: Impossible de session Session Cache Limiter - Les en-têtes déjà envoyés

Point d'ordre d'octet.
Parfois, vous avez tout vérifié - il n'y a rien nulle part. Changer l'éditeur. Regardez votre dossier dans un autre programme. Par exemple, Windows Notepad lors de l'utilisation de l'encodage Unicode ajoute au début de votre fichier, le point de commande de l'octet de service de service, en même temps sans être informé. Ouvrez le script dans un autre éditeur et supprimez les symboles étrangers. Et changer le bloc-notes vers un autre éditeur.
Ou enregistrer dans le codage UTF-8 sans bom

De nombreuses questions sur le forum me font faire ici note importante:
Cette erreur n'apparaît pas de ce que vous avez dans le script "quelque chose est écrit ci-dessus." Et du fait que RNR affiche quelque chose dans le navigateur. Ce n'est pas nécessairement le code. C'est possible message d'erreur. Il peut y avoir une balise d'espace ou de HTML. Oui oui. Pour le plus talentueux: il s'agit de tout symbole envoyé au navigateur et non seulement à ceux que le navigateur affiche l'utilisateur inexpérimenté. Les pages HTML ont un texte source. Et c'est que le résultat du travail du script PHP, et pas de belles lettres avec les clips, comme un très grand nombre de personnes pensent.

Aujourd'hui, nous avons décidé de parler de ce que signifie le message "AVERTISSEMENT: impossible de modifier les informations d'en-tête - les en-têtes déjà envoyés par (sortie démarré à / home / ..."qui est apparu sur la page du site au lieu de son contenu principal.
Comme il s'est avéré, le réseau est assez écrit sur ce sujet, mais il n'y a pas d'instruction généralisée que tout cela signifie et comment s'en débarrasser.
Nous avons décidé d'ajouter quelques gouttes dans une immense mer d'informations sur ce sujet, car nous sommes entrés en collision avec ce problème personnellement.

Il y a quelque temps, nous avons transféré plusieurs sites clients d'un hébergement à un autre.
Tout s'est bien passé, les sites étaient disponibles, mais en essayant d'entrer dans l'administrateur. Le panneau, après avoir entré le login et le mot de passe, la page blanche est apparue au lieu du panneau de commande.
Vérifié sur le reste des sites - le même.
Pour connaître les raisons possibles, nous avons allumé l'affichage des erreurs.
Pour ce faire, vous devez modifier le fichier.htaccess à la racine du site en ajoutant une chaîne à celle-ci:

Php_flag display_errors sur

Après cela, lors de la saisie de l'administrateur. Le panneau est apparu plusieurs messages du type "AVERTISSEMENT: impossible de modifier les informations d'en-tête - les en-têtes déjà envoyés par (sortie démarré à /home/.../functions.php:152) dans / home / .. ./public_html /wp-login.php sur la ligne 362 ", etc.

À la suite des recherches, des informations ont été constatées que ce message a été notifié que les informations d'en-tête ne peuvent pas être modifiées, car les en-têtes (informations à leur sujet) étaient déjà envoyés précédemment, puis des supports ont été indiqués par exactement les chaînes dans lesquelles il s'agissait. effectué.


Titres (En-têtes.) - Il s'agit des informations de serveur sur lesquelles se trouve le site. Avant que le navigateur affiche le contenu du site, il faut des en-têtes du serveur, où différentes données sont spécifiées: si la mise en cache de la page est activée, son codage, le type de contenu de la page et d'autres personnes. Dans les systèmes de gestion de contenu, les titres sont formés par des fonctions situées dans divers fichiers système.
Être sûr de conditionner - Les en-têtes doivent être expédiés au contenu principal de la page.


Si le contenu du site est transmis aux en-têtes, la situation résulte du message "AVERTISSEMENT: impossible de modifier les informations d'en-tête - les en-têtes déjà envoyés par ..."

Dans quelles situations peut-il se produire? Comme déjà parlé, dans les titres de CMS modernes résultent d'une ou de plusieurs fonctions. La fonction elle-même est une sorte de code d'extraction, prisonnier entre la première et fini ?> Mots clés.

Tout ce qui est au-delà de ces balises est considéré comme le contenu de la page.
Ainsi, si au début de la page existe des fonctions, le résultat est envoyé des en-têtes et nous obtenons le message "AVERTISSEMENT: impossible de modifier les informations d'en-tête ...", il s'avère alors que certaines informations relatives au contenu de la page est envoyé du serveur aux titres.

Quelle est ces informations et comment le trouver. Le plus souvent, ce sont des lacunes et des chaînes vides.

Un espace ou une ligne vide est interprété comme des symboles du contenu principal de la page. Il s'avère donc que la partie du contenu principal est devant les en-têtes et est envoyée au navigateur d'abord.

Vous devez télécharger les fichiers spécifiés dans l'avertissement: impossible de modifier les informations d'en-tête ... »Messages de l'ordinateur local, Ouvrir dans l'éditeur de code (j'utilise Notepad ++) et vérifiez soigneusement les lignes et les espaces vides:

En même temps, il existe une caractéristique importante qui peut augmenter considérablement le temps à la recherche de la solution.
Le fichier peut ne pas être des lignes et des espaces vides, mais s'il a été enregistré dans l'encodage UTF-8, un symbole extrêmement étranger au tout début du document peut insérer l'éditeur dans lequel le fichier a été créé. Ce symbole est un identifiant UTF-8 égal à un espace de largeur zéro qui, dans l'éditeur, ne peut pas être affiché du tout, mais le serveur sera perçu comme le contenu principal et supprimé avant les en-têtes.

Pour vous débarrasser de cet identifiant, vous devez reconnecter les fichiers téléchargés dans le format. Utf-8 sans bom (UTF-8 sans bom).

Avec cette tâche, Notepad ++ est parfaitement en train de faire face.

Après ces actions et mises à jour des fichiers sur le serveur, le message doit disparaître et le site fonctionnera en mode habituel.

Dans cet article, nous examinerons les titres nécessaires, sans entrer dans les détails que ce qui est responsable. La description des rôles des titres les plus courants sera donnée dans les articles suivants.

Tous les articles du cycle:

  • Quels sont les titres HTTP. Théorie générale.

Http. Déchiffré en tant que protocole de transfert hypertexte (protocole de transmission hypertexte). Le protocole est un ensemble de règles par lesquelles différents périphériques échangent des données. Il a été créé dans les années 1990. Maintenant, il est utilisé sur Internet presque partout. Tout ce que vous voyez dans la fenêtre du navigateur a été obtenu par ce protocole. Http titres - peut-être la principale chose en communication entre les appareils. Ils transmettent des informations de base sur la connexion et les informations transmises via cette connexion.
Regardez le circuit de la communication de deux appareils. Laissez ces périphériques être votre ordinateur et un serveur sur Internet:

Comme vous pouvez le constater, le navigateur a envoyé une demande HTTP. Il peut ressembler à quelque chose comme ça:

Obtenir / Autre-19 http / 1.1
HÔTE: www.scriptsite.ru.
Agent utilisateur: Mozilla / 5.0 (Windows; U; Windows NT 6.0; RU; RV: 1.9.1.5) Gecko / 20091102 Firefox / 3.5.5 (.NET CLR 3.5.30729)
Accepter: Texte / HTML, Application / XHTML + XML, Application / XML; Q \u003d 0,9, * / *; q \u003d 0,8
Accepter-Langue: ru, en-nous; q \u003d 0,7, en; q \u003d 0.3
Accepter-codage: gzip, dégonfler
Accepter-Charset: Windows-1251, UTF-8; Q \u003d 0,7, *; q \u003d 0,7
Garder-vivant: 300
Connexion: Garder-vivant

Dans le même temps, la première ligne est une chaîne de requête, toutes les autres lignes sont des en-têtes HTTP qui effectuent des informations supplémentaires sur la demande, à propos du client, qui est demandée par cette infograçage, de nombreuses autres choses.
En réponse à notre demande, le serveur peut envoyer de tels titres:

Serveur: Apache / 2.0.61 (UNIX) MOD_SSL / 2.0.61 OPENSSL / 0.9.8K MOD_DP20 / 0.99..2 PHP / 5.2.5 MOD_PYTHON / 3.3.1 PYTHON / 2.5.1 MOD_RUBY / 1.2.6 RUBY / 1.8.6 (2007-09-24)

X-Powered-by: php / 5.2.5

Set-Cookie: PPSESSID \u003d FT47GOKFEE6AMV3EDA3K1P93S3; chemin \u003d /

Cache-Control: No-Store, No-cache, Must-revalidate, Post-Check \u003d 0, Pré-Check \u003d 0

Pragma: No-cache

Garder-vivant: délai d'attente \u003d 10, max \u003d 1024

Connexion: Garder-vivant

Encodage de transfert: Chunked

Type de contenu: Texte / HTML

La première ligne est une chaîne de statut. Les lignes restantes sont des titres. Le schéma montre que le contenu de la page se déplace également. Mais ce contenu n'est généralement pas habituel d'afficher dans les titres de visualisation des plugins. Oui, et le contenu de la page n'est qu'un cas particulier. Selon le protocole, la page ne doit pas être transmise. Au lieu de cela, il peut être transmis et une image et un fichier son, et une vidéo. Et tous les titres seront très différents.

Comment voir les en-têtes HTTP?

Afin de voir des titres HTTP, je recommande les plugins suivants pour Firefox Navigateur:

Si vous utilisez le navigateur Chrome, vous pouvez afficher toutes les informations en cliquant sur le bouton Paramètres - Outils - Outils de développement. Onglet Networks.
Je ne peux rien conseiller quoi que ce soit à utiliser pour être conseillé par le navigateur Opera, car je ne suis pas ami avec ce navigateur. En installant les plug-ins et en les exécutant, essayez de rafraîchir la page. Vous verrez immédiatement d'énormes listes de demandes et de réponses par lesquelles votre navigateur communiquait avec le serveur.

Titres HTTP et accès à eux dans PHP

Si vous êtes un développeur PHP, vous pouvez accéder aux en-têtes de requête à l'aide de la fonction Getallheaders (). Pour comprendre son travail, nous allons exécuter un tel code:

Et nous obtenons une impression du tableau d'en-tête.

Mais plus souvent, ils sont traités par la variable globale $ _Server. Presque pour chaque en-tête HTTP, il existe un nom similaire de l'élément de cette variable formé sur le principe de http_miam_abld. Donc, pour le même "user_agent", il existe une variable $ _Server ['http_user_agent'];

Pour recevoir des titres que le serveur va envoyer à l'utilisateur, la fonction Headers_List () est utilisée. En règle générale, le serveur manque des titres obligatoires à la fin de tous les scripts. Par conséquent, cette matrice contiendra des titres ou ceux que le serveur a créé avant le début du script (et ils ne seront pas modifiés) ou ceux que nous avons installés manuellement. Vous pouvez les définir manuellement à l'aide de la fonction d'en-tête ("Texte de l'en-tête");
Effectuer un tel code:

Nous verrons l'impression de la fonction d'en-tête prêt à envoyer au moment de l'appel:

La première en-tête a été installée automatiquement et porte le nom du serveur sur lequel le script s'exécute. La seconde est installée manuellement. Si le navigateur était nécessaire, un titre «fruit», il le prendrait de la réponse HTTP du recruver et utilisé. Mais puisque notre navigateur n'en a pas besoin, il ignore simplement la chaîne incompréhensible à lui.

Structure requête HTTP

Notre demande est la suivante:

La première ligne dedans, comme déjà mentionné précédemment, est une chaîne de requête. Il se compose de trois parties:

  • méthode. (Méthode) - indique quel type de requête. Les méthodes les plus courantes: obtenir, poster, tête. Ils seront écrits au paragraphe suivant.
  • chemin. (Chemin) - En règle générale, cela fait partie de l'URL, qui fonctionne après le domaine. Par exemple, si vous entrez dans la barre d'adresse http://www.scriptsite.ru/about/, la valeur du chemin sera / environ /.
  • protocole (Protocole) - Protocole utilisé. En règle générale, se compose de "http" et de la version du protocole. Habituellement, la version 1.1 est utilisée dans les navigateurs modernes.

Les en-têtes suivants se présentent sous la forme de chaînes de format "nom: valeur".
À propos, les données de cookies sont également transmises dans cette demande sous la forme de l'un des titres. La plupart de ces lignes ne sont pas obligatoires. La demande peut être réduite à deux lignes:

Obtenir / article / show / 4 / http / 1.1

Hôte: scriptsite.ru.

Méthodes de demande

Obtenir.

le GET-QUU est généralement utilisé pour demander un document avec le transfert de certains paramètres.
Ceci est la méthode principale utilisée pour recevoir des pages HTML, des images, des fichiers CSS et JavaScript, etc.
En raison du fait que les paramètres peuvent être n'importe où, et il n'y a pas de restrictions sur le serveur pour les méthodes de traitement, le procédé de demande de données est souvent utilisé pour transmettre des informations. Par exemple, nous aurons une telle forme

Dans ce cas, ces paramètres seront visibles dans la barre d'adresse du navigateur.

PUBLIER.

L'article est une méthode utilisée pour envoyer des données au serveur. Bien que vous puissiez envoyer des données au serveur GET à l'aide de la barre d'adresse GET, dans la plupart des cas, il est préférable d'utiliser Post. Envoyer des données de données volumineuses via GET est impraticable. De plus, obtenir certaines limitations qui n'autorisent pas, par exemple, publient cet article sur mon site via une chaîne de navigateur. Les demandes postales sont la plus souvent utilisées pour transmettre un formulaire Web. Modifions le formulaire de l'exemple précédent, en définissant la méthode postale



Avez-vous aimé l'article? Partagez-le