tévék. Konzolok. Projektorok és tartozékok. Technológiák. Digitális TV

Békeinformációs fejlécek. Hibajavítás: a fejléc információi nem módosíthatók – a fejléceket már elküldte. De sikerülhet

Az emberek folyamatosan ezzel a hibával fordulnak hozzám, és azt kérdezik: " hol a hiba?". Az egész idő alatt körülbelül néhány ehhez hasonló levelet kaptam 500 , nem kevesebb. Ideje befejezni a "" hibát. Ebben a cikkben a hiba okairól, valamint a megoldás módjáról fogok beszélni.

Ha lefordítjuk ezt a hibát oroszul, valami ilyesmit kapsz: " A fejléc nem módosítható, mert már elküldték"Mi ez" fejlécek"? Találjuk ki.

Amikor a szerver a törzstől eltérő választ ad vissza az ügyfélnek (például HTML kód oldalak), vannak címsorok is. Tartalmazzák a szerver válaszkódját, aprósütemény, kódolás és sok más szolgáltatási paraméter. Tud PHP szkript küldesz címet? Természetesen lehet. Erre van egy funkció fejléc().

Ezt a funkciót például folyamatosan használják, amikor. Ezt a funkciót rendszeresen használják a .

A fejlécek is módosulnak küldéskor aprósüteményés a munkamenet elején (függvény session_start()).

És most arról, hogy miért fordul elő még mindig a hiba? A szerver először mindig a fejléceket adja meg a szervernek, majd a törzset. Ha a kiszolgáló már visszaküldte a fejléceket, akkor a törzs elmegy, és találkozik velük session_start(). Kiderült, hogy a szerencsétlen programozó elfelejtette elküldeni a fejléceket a törzs indulása előtt, és most utol akarja érni a már indult vonatot.

Íme a kód a "" hibával:



?>

Persze ilyen hülyeségeket PHP nem bocsát meg. És ezt így kellett volna írni:

session_start(); // Kezdjük a munkamenetet
?>

Ez a szkript nem okoz hibát, mert először minden fejléc kerül elküldésre, és csak ezután jön létre a szerver válasz törzse.

Egy másik példa hibás kódra:

echo "Helló!"; // Nyomtasson valamit
session_start(); // Kezdjük a munkamenetet
?>

Ugyanez, valamiért először a törzs (vagy annak egy darabja) jelenik meg, aztán eszébe jutott, hogy a fejlécet is módosítani kell.

Gondolja végig, hogyan írja át helyesen ezt a kódot.

Egy másik példa:




kijárat;
?>

Amikor egy ilyen kód szerzője meghibásodik, meglepődik ezen a hibán, és azt mondja: „Nagyon furcsa egybeesés, amikor a művelet sikeres, minden rendben van, és ha valami hiba van, azt mondják, hogy nem lehet módosítani a fejléc információkat - fejlécek már el lett küldve." Nem szó szerint, de ez a lényeg.

A probléma ugyanaz, és a helyes írásmód a következő:

$hiba = igaz; // Voltak hibák?
if ($error) echo "Hiba történt";
else header("Hely: ".$_SERVER["HTTP_REFERER"]); // Visszairányítás
kijárat;
?>

Vannak apró hibák is:

header("Hely: ".$_SERVER["HTTP_REFERER"]); // Visszairányítás
kijárat;
?>

Ebben a kódban a hiba szóköz miatt következik be, amely korábban jelen van . A tér normális karakter, és a választest része. És amikor a szerver látja, arra a következtetésre jut, hogy nem lesz több fejléc, és ideje kiadni a törzset.

Vannak még a következő hibák, amelyek azonos jellegűek. Tegyük fel, hogy van egy fájl a.html:

request_once "a.html";
header("Hely: ".$_SERVER["HTTP_REFERER"]); // Visszairányítás
kijárat;
?>

És az ember őszintén meglepődik, honnan jött a hiba, ha nem adott ki semmit? Ezért nem kell konkrétan nézni 1 fájlt és az abban található összes fájlt. Azokban pedig, amelyek a csatlakozókhoz csatlakoznak, azt is meg kell nézni, hogy ne legyen kimenet.

És az utolsó pont, de még nehezebb. Kiderült, hogy néha ez a hiba még helyes kód esetén is előfordul. Aztán minden ez kódolás kérdése. Győződjön meg arról, hogy a fájl kódolása " UTF-8 anyagjegyzék nélkül"és pontosan" BOM nélkül", nem csak " UTF-8". Mert a BOM azok a bájtok, amelyek a fájl legelején érkeznek, és ezek jelentik a kimenetet.

Nagyon remélem, hogy ez a cikk segít megoldani a „” hibával kapcsolatos összes problémát, mivel megpróbáltam kiemelni az összes felmerülő problémát. És akkor el kell fordítania a fejét, és el kell gondolkodnia, mi a hiba a kódjában?

Ebben a cikkben megvizsgáljuk, hogy milyen fejlécekre van szükség, anélkül, hogy részleteznénk, melyik miért felelős. A leggyakoribb címsorok szerepét a következő cikkekben ismertetjük.

A sorozat összes cikke:

  • Mik azok a HTTP fejlécek? Általános elmélet.

HTTP a HyperText Transfer Protocol rövidítése. A protokoll olyan szabályok összessége, amelyek szerint különböző eszközök adatokat cserélni. Az 1990-es években hozták létre. Ma már szinte mindenhol használják az interneten. Minden, amit a böngészőablakban lát, ezen a protokollon keresztül szerezte be. A http fejlécek talán a legfontosabbak az eszközök közötti kommunikációban. Alapvető információkat közölnek a létrejövő kapcsolatról és a kapcsolaton keresztül továbbított információkról.
Vessünk egy pillantást a két eszköz közötti kommunikációs diagramra. Legyen ezek az eszközök az Ön számítógépe és néhány kiszolgáló az interneten:

Mint látható, a böngésző http kérést küldött. Valahogy így nézhet ki:

GET /egyéb-19 HTTP/1.1
Házigazda: www.scriptsite.ru
Felhasználói ügynök: 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)
Elfogadás: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Elfogadás-kódolás: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0,7,*;q=0,7
Életben tartás: 300
Csatlakozás: életben tartás

Ebben az esetben az első sor a kéréssor, az összes többi sor http fejléc, amely hordoz További információ a kérésről, az ügyfélről, aki ezt az információt kéri, sok más dologról.
Kérésünkre a szerver a következő fejléceket tudja küldeni:

Szerver: 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: PHPSESSID=ft47gokfee6amv3eda3k1p93s3; útvonal =/

Cache-Control: nincs tárhely, nincs gyorsítótár, újra kell érvényesíteni, utólagos ellenőrzés=0, előzetes ellenőrzés=0

Pragma: nincs gyorsítótár

Életben tartás: időtúllépés=10, max=1024

Csatlakozás: Keep-Alive

Átviteli kódolás: darabolt

Tartalom típusa: szöveg/html

Az első sor az állapotsor. A fennmaradó sorok fejlécek. A diagram megmutatta, hogy az oldal tartalma is betöltődik. Ez a tartalom azonban általában nem jelenik meg a fejléc-megjelenítő bővítményekben. Az oldal tartalma pedig csak egy speciális eset. A protokoll szerint az oldalt nem feltétlenül kell továbbítani. Ehelyett mind egy képet, mind hangfájl, és videó. És mindegyiknek nagyon eltérő címsora lesz.

Hogyan lehet látni a http fejléceket?

A http fejlécek megtekintéséhez javaslom a következő bővítményeket a firefox böngészőhöz:

Ha Chrome böngészőt használ, az összes információt megtekintheti a beállítások gombra kattintva - eszközök - fejlesztői eszközök. Hálózatok lap.
A felhasználók számára opera böngésző Nem tudok tanácsot adni, mert nem ismerem ezt a böngészőt. Miután a beépülő modulok telepítve vannak és futnak, próbálja meg frissíteni az oldalt. Azonnal látni fogja a kérések és válaszok hatalmas listáit, amelyeken keresztül a böngésző kommunikált a szerverrel.

Http fejlécek és hozzáférésük php-ban

Ha Ön PHP fejlesztő, a getallheaders() függvény segítségével érheti el a kérés fejléceit. A működés megértéséhez futtassuk a következő kódot:

És kinyomtatjuk a fejléctömböt.

De gyakrabban érhetők el a $_SERVER globális változón keresztül. Szinte minden http fejlécnek van hasonló elemneve ebben a változóban, amely a HTTP_fejléc_neve elv szerint van kialakítva. Tehát ugyanannak a ‘User_Agent’-nek van egy változója: $_SERVER['HTTP_USER_AGENT'];

A fejlécek lekéréséhez, amelyeket a szerver küld a felhasználónak, a headers_list() függvényt használjuk. Általános szabály, hogy a szerver az összes szkript végén összeállítja a hiányzó szükséges fejléceket. Ezért ez a tömb vagy azokat a fejléceket fogja tartalmazni, amelyeket a kiszolgáló hozott létre a szkript végrehajtása előtt (és ezek nem változnak), vagy azokat, amelyeket kézzel állítottunk be. Manuálisan beállíthatók a header("header text") függvény segítségével;
Futtassuk a következő kódot:

A függvény meghívásakor a fejlécek kinyomtatása készen áll a küldésre:

Az első fejléc automatikusan lett beállítva, és annak a kiszolgálónak a nevét tartalmazza, amelyen a szkript fut. A másodikat saját kezűleg telepítettük. Ha a böngészőnek szüksége volt a "Fruit" fejlécre, akkor azt a szerver http válaszából veszi, és használja. De mivel a böngészőnknek nincs rá szüksége, egyszerűen figyelmen kívül hagyja azt a sort, amelyet nem ért.

HTTP kérés szerkezete

A mi kérésünk így néz ki:

Az első sor benne, mint korábban említettük, a lekérdező sor. Három részből áll:

  • módszer(módszer) - jelzi, hogy milyen típusú kérést. A leggyakoribb módszerek: GET, POST, HEAD. Róluk a következő bekezdésben lesz szó.
  • pálya(útvonal) – általában az URL-nek ez a része a domain után. Például, ha beírja a http://www.scriptsite.ru/about/ címet a címsorba, az elérési út értéke /about/ lesz.
  • jegyzőkönyv(protokoll) – a használt protokoll. Általában a "HTTP"-ből és a protokoll verziójából áll. A modern böngészők általában az 1.1-es verziót használják

Ezután jönnek a fejlécek a „Név: érték” formátumú karakterláncok formájában.
Ebben a kérésben egyébként a cookie-adatok is továbbításra kerülnek, mint az egyik fejléc. E sorok többsége nem kötelező. A lekérdezés két sorra redukálható:

Szerezze be /article/show/4/ HTTP/1.1

Házigazda: scriptsite.ru

Kérési módszerek

KAP

A get kérés általában egy dokumentum kérésére és bizonyos paraméterek átadására szolgál.
Ez a fő módszer a HTML-oldalak, képek, CSS- és JavaScript-fájlok stb. beszerzésére.
Tekintettel arra, hogy a paraméterek bármiek lehetnek, és a szervernek nincs korlátozása a feldolgozásukra vonatkozóan, az adatkérési módszert gyakran használják információtovábbításra. Például lesz egy ilyen űrlapunk

Ebben az esetben ezek a paraméterek a böngésző címsorában lesznek láthatók.

POST

A postázás az a módszer, amellyel adatokat küldenek a szerverre. Bár a böngésző címsorán keresztül GET metódussal is küldhet adatokat a szervernek, a legtöbb esetben célszerű a POST használata. Nagy mennyiségű adat küldése GET-en keresztül nem praktikus. Ezenkívül a GET-nek vannak olyan korlátozásai, amelyek nem teszik lehetővé például, hogy ezt a cikket egyetlen böngészősoron keresztül közzétegyem a webhelyemen. A POST kéréseket leggyakrabban webes űrlapok beküldésére használják. Módosítsuk az előző példában szereplő űrlapot úgy, hogy POST metódus legyen

A HTTP-fejlécek és a HTTP-fejlécmezők megértése

HTTP fejlécek a HTTP-tranzakciók küldéséhez szükséges létfontosságú információkat http protokoll.

Az általános HTTP-fejlécformátum kettősponttal elválasztott név-érték párokat tartalmaz a fejlécben. A név-érték párok mindegyike kocsivissza (CR) és soremelés (LF) karaktersorozattal végződik. Az egyes fejlécek végén lévő üres mezők jelzik a fejléc végét.

A közös fejlécformátum, amelyet az alkalmazások követnek, így néz ki:

A HTTP-fejlécek típusai

A HTTP üzenet fejléceknek négy típusa van. Ők:

  • Általános fejléc
  • Kérelem fejléce
  • Válasz fejléc
  • Entitásfejléc

Általános fejléc

Az általános fejléc mezők általánosan alkalmazhatók kérés- és válaszüzenetekben. A fejlécmezők csak a továbbított üzenetre vonatkoznak, az átvitt entitásra nem.

Az általános fejléc szerkezete így néz ki:

Cache-vezérlés mező olyan direktívákat ad meg, amelyeket minden gyorsítótárazási mechanizmusnak követnie kell egy kérés- és válaszrendszeren.

Kapcsolat mező lehetővé teszi a feladó számára a kapcsolathoz szükséges beállítások megadását. A kapcsolat fejlécének formátuma a következő:

Dátum mező az üzenet kezdeményezésének dátumát és időpontját jelöli. A HTTP-ben megadott dátumformátum így néz ki:

Pragma mező segít beilleszteni a végrehajtás-specifikus direktívát, amely a kérés- és válaszrendszer bármely címzettjére vonatkozik.

Filmelőzetes A mező értéke azt határozza meg, hogy az üzenetelőzetesben lévő fejlécmezők készlete chunk transfer-kódolással van-e kódolva.

Transzfer-kódolás mező azt jelzi, hogy alkalmaznak-e bármilyen típusú átalakítást az üzenettörzsre.

Frissítés mező lehetővé teszi az ügyfelek számára további támogatott kommunikációs protokollok megadását. Lehetővé teszi azt is, hogy a kiszolgáló protokollt váltson a további protokollokkal.

Keresztül A mező a proxyk és az átjárók által használt kötelező mezők, amelyek közbenső protokollokat jeleznek. Jelzi továbbá a kérés címzettjét a felhasználói ügynök és a szerver között, valamint a választ a szerver és a kliens között.

Figyelem mező további információkat tartalmaz az üzenet állapotáról és az üzenetátalakításokról, amelyek nem jelennek meg az üzenetben.

A figyelmeztető fejléceket általában válaszokkal együtt küldik el.

A kérelem fejlécmezője lehetővé teszi az ügyfelek számára, hogy a kérésinformációkat és az ügyféladatokat is továbbítsák a kiszolgálónak.

A kérés fejlécének szerkezete így néz ki:

Elfogad mező megadja a válaszadáshoz elfogadható médiatípusokat.

A „*” a médiatípusok tartományon belüli csoportosítására szolgál

A „*/*” az összes médiatípust jelzi

A "típus/*" egy típus összes altípusát jelzi

Elfogadás-karakter mező jelzi a válasz elfogadható karakterkészleteket. Lehetővé teszi az ügyfelek számára, hogy megértsék a speciális célú karakterkészleteket, hogy jelezzék a szervernek, hogy a dokumentumot ezekben a karakterkészletekben jelenítse meg.

Elfogadás-kódolás mező hasonló az Accept mezőhöz, korlátozza a válasz elfogadható tartalomkódolását.

Elfogadás-Nyelv mező hasonló az Elfogadás mezőhöz, korlátozza a természetes nyelvek preferált halmazát.

Engedélyezés mező azoknak a felhasználói ügynököknek szól, akik hitelesíteni kívánják magukat a szerveren.

Elvárni mező az ügyfél által megkövetelt szerverviselkedést jelzi.

Tól től mező egy olyan felhasználó e-mail címét tartalmazza, aki felügyeli a kérelmező felhasználói ügynököt.

Házigazda mező megadja az internetes gazdagépet és a felhasználói URI-tól kért erőforrás portszámát.

Ha-Match mezőt feltételes metódusok készítésére használják.

Ha-Módosítva-Azóta mezőt feltételes metódus készítésére használjuk. Ha a kért változatot nem módosítják a megadott időn belül, az entitás nem kerül visszaadásra a szerverről.

Ha-Nincs-Egyezés mező lehetővé teszi a gyorsítótár-információk hatékony frissítését minimális tranzakciós többletköltséggel.

Ha-tartomány mező lehetővé teszi az ügyfelek számára, hogy megkapják a hiányzó entitás egy részét, vagy más módon, az ügyfelek kérhetik a teljes új entitás elküldését.

Ha-Módosítatlan-Azóta mező lehetővé teszi a szerver számára a kért művelet végrehajtását, ha az ebben a mezőben megadott idő óta nem módosult.

Max Forwards mező olyan mechanizmusokat biztosít a TRACE és OPTIONS metódusokkal, amelyek korlátozzák a kéréstovábbítási proxykat vagy átjárókat.

Meghatalmazott engedélyezése mező lehetővé teszi az ügyfél azonosítását a biztonságos proxy számára.

Hatótávolság mező határozza meg a HTTP-entitásokat a HTTP-üzenetekben, amelyek bájtok sorozataként jelennek meg. A HTTP lekérési kérés az entitás egy vagy több altartományát kéri le GET metódusokkal.

Hivatkozó mező lehetővé teszi az ügyfelek számára, hogy megadják annak az erőforrásnak az URI címét, amelyből a Request-URI megtalálható.

T.E. mező a kiterjesztés átviteli kódját jelzi, amelyet a válaszban elfogadhat. Ezenkívül jelzi, hogy elfogadja-e a pótkocsi mezőket a darab átviteli kódolásban.

User-Agent mező információkat tartalmaz a kérelmező felhasználói ügynökről.

HTTP válaszfejléc

A válaszfejléc mező lehetővé teszi, hogy a kiszolgáló további információkat továbbítson a válaszokon keresztül, az egyszerű Status-Line válaszon kívül.

A válaszfejléc szerkezete így néz ki:

Elfogadás-tartományok mező lehetővé teszi a szerverek számára, hogy jelezzék az erőforrás-tartomány kérelmek elfogadását.

Kor A mező a feladónak azt az időtartamát jelzi, amely óta a szerver válaszol.

Etag mező megadja a kérés entitáscímkéjének aktuális értékét.

Elhelyezkedés mező átirányítja a címzetteket a Request-URI-tól eltérő helyekre, hogy befejezze az új erőforrás azonosítását.

Proxy-hitelesítés mező kötelező megadása a proxy hitelesítési válaszhoz.

Retry-After A mező válaszként kerül felhasználásra, ha egy szolgáltatás nem érhető el, jelezve azt az időtartamot, ameddig a szolgáltatás elérhetetlen marad az ügyfél számára.

szerver mező információkat tartalmaz a szerver által a kérések kezelésére használt szoftverekről.

Vary A mező a kérés mezőt jelöli, amely meghatározza, hogy a gyorsítótár alkalmas-e a kérés válaszának használatára a válasz újraérvényesítése nélkül.

WWW-Hitelesítés mezőket akkor használjuk, ha a válaszüzenet jogosulatlan.

Az entitásfejléc mezők metainformációkat határoznak meg az entitástörzsről vagy a kért erőforrásról. Az entitásfejléc formátuma így néz ki:

Lehetővé teszi mező felsorolja a Request-URI azonosított erőforrások által támogatott metódusokat.

Tartalom-kódolás mező médiatípus módosítóként használatos.

Tartalom-Nyelv mező a természetes nyelvet írja le egy entitás ügyfelei számára.

Tartalom-hossz mező egy decimális számmal ábrázolt entitás méretét jelzi.

Tartalom-hely mező megadja az erőforrás helyét egy entitás számára, ha az a kért URI-tól eltérő helyről érhető el.

Tartalom-MD5 mező üzenetintegritás-ellenőrzést (MIC) biztosít az entitástörzs MD5-kivonatával.

Tartalom-tartomány mező megadja, hogy hol kell alkalmazni a teljes entitástest részleges törzsét.

Tartalom típus mező azt jelzi, hogy az entitástörzs médiatípusát elküldték-e a címzettnek, vagy a GET metódust használják a kérések küldésére.

Lejár mező azt a dátumot/időt adja meg, amely után a válasz elavulttá válik.

Utoljára módosítva mező a változat utolsó módosításának dátumát és időpontját jelzi.

Az a sorrend, ahogyan a mezőnév megjelenik a fejlécben, nem jelentős. Hagyományosan az általános fejléceket helyezik el először, majd a kérés vagy válasz fejlécet, a végén entitásfejléccel.

Szerzői jogi megjegyzés: Kérjük, ne másolja vagy fordítsa le ezt a cikket a webhely előzetes írásos engedélye nélkül

A HTTP Debugger egy proxy nélküli HTTP-elemző fejlesztők számára, amely lehetővé teszi HTTP-fejlécek, cookie-k, POST-paraméterek, HTTP-tartalom és CORS-fejlécek rögzítését és elemzését bármely böngészőből vagy asztali alkalmazásból. Félelmetes felhasználói felület és nagyon könnyen használható. Nem proxy, nincs hálózati probléma!

Elképesztő, hogy egy apró hiba mennyire működésképtelenné teheti a WordPress webhelyét. Természetesen a híres WordPress figyelmeztető hibáról beszélünk Figyelmeztetés: nem módosítható a fejléc információja – a fejléceket már elküldte a pluggable.php (nem módosítható a fejléc információja). Ha Ön azok közé tartozik, akik szembesülnek ezzel a hibával, akkor jó helyen jártok. Ebben megvitatjuk, hogy miért jelenik meg ez a hiba, és megvizsgáljuk azokat a megoldásokat, amelyek véglegesen megoldják a problémát.

Amire szükséged van

Mielőtt elkezdené, győződjön meg arról, hogy rendelkezik az alábbiakkal:

  • Hozzáférés a tárhely vezérlőpultjához vagy FTP-hozzáféréshez

Hogyan jelenik meg a Nem módosítható fejléc információ – a már hibásan elküldött fejlécek?

Nézzünk egy példát erre a hibára, hogy jobban megértsük az okokat. A hiba általában a következő formában jelenik meg:

Figyelmeztetés: A fejléc információi nem módosíthatók – a(z /public_html/wp-content/plugins/my-plugin/my-function.php:#) által már elküldött fejlécek a /public_html/wp-includes/pluggable.php sorban #.

Mint látható, a hiba két fájlt említ. Az első fájl (esetünkben: my-function.php kirakott /public_html//wp-content/plugins/my-plugin/) a gyanúsítottak élén. Ez az egyéni kódunk, amelyet a WordPress által biztosított alapvető funkciók módosítására terveztünk. Az alapvető funkciók a fájlban találhatók bedugható.php(WordPress alapfájl, változatlan WordPress telepítések). Más szóval, a probléma az első fájlban van, ami megakadályozza a második fájl megfelelő végrehajtását.

A hiba fő oka szükségtelen szóközök az első fájlban. Ezek szóközök a fájl tetején vagy alján, szükségtelen szóközök bárhol a fájlban, vagy akár szóközök a PHP címkékben . Mellesleg, mivel a programozók tévedésből extra szóközt illeszthetnek be a kódjukba (és általában meg is teszik), ez a hiba gyakrabban fordul elő, mint azt várná. A hibaüzenetben található # sor a probléma helyére utal – ez segít a probléma gyorsabb és problémamentes megoldásában.

A hiba kijavítása nem módosíthatja a fejlécinformációkat – a fejléceket már elküldte

Most, hogy tudja, mi okozza a hibát, folytathatja a javítást. Mutatunk két lehetőséget a probléma megoldására, amelyeket egyénileg vagy felváltva is kipróbálhat, ha külön-külön nem segít.

1. lehetőség – A hibás fájl szerkesztése

A hiba első megoldása Figyelmeztetés: a fejléc információi nem módosíthatók– hibás fájl kézi javítása. Már van raktáron szükséges információ, hogy megtalálja a problémát magában a hibaüzenetben (ne feledje, ez az első fájl az üzenetben). Mindössze annyit kell tennie, hogy megnyitja ezt a fájlt FTP-n keresztül egy olyan kliens segítségével, mint a FileZilla, vagy egy fájlkezelőn keresztül.

Lényegében itt csak a felesleges szóközök/üres sorok eltávolítására kell ügyelni a fájlból. Jó kiindulópont a hibaüzenetben említett # sor. Innentől kezdve folytathatja a fájl többi részének elemzését, keresve a felesleges szóközöket vagy üres sorokat, egészen a dokumentum végéig.

Ügyeljen arra, hogy helyesen írja le a PHP kezdő és záró címkéit. A címke előtt vagy után ne legyen szóköz , valamint a címkét ?> . Ezenkívül a kód utolsó sora nem végződhet szóközzel vagy szükségtelen fordítás vonalak.

Az alábbi képernyőképen láthatja a fájlt wp-config.php, amelynek az első PHP címke előtt szóközök vannak.


NYOM: Sok szövegszerkesztő képes automatikusan eltávolítani a felesleges szóközöket. Például a felesleges szóközök eltávolításához az Atom szerkesztőben jelölje ki az összes kódot, és lépjen a P-re ackages -> Szóköz -> Végső szóköz eltávolítása.

2. lehetőség – Cserélje ki a hibás fájlt

Természetesen a hibás fájlok egész sorozatának szerkesztése nehéz lehet. A fájlok kapcsolódhatnak egy bővítményhez vagy témához, amelyet most telepített a webhelyére, vagy akár WordPress alapfájlok is lehetnek.

Ha a hibát valóban egy beépülő modul vagy téma okozza, csak újra kell telepítenie. Ez a művelet a legtöbb esetben segít. Másrészt, ha a WordPress alapfájlja okozza a hibát, a legjobb megoldás készítsen egy tiszta másolatot a WordPress-ről, és cserélje ki a telepítés hibás fájlját a megfelelő verziójú fájlra. Ez biztosítja, hogy a hibás fájl helyreálljon a kezdeti állapot, míg a WordPress webhely telepítésének többi része érintetlen marad. Most töltse be újra az oldalt, és győződjön meg arról, hogy a hiba javítva van.

Következtetésképpen

Függetlenül attól, hogy beillesztett egy kódrészletet egy fájlba, hozzáadott egy új beépülő modult/témát, vagy manuálisan írta meg a kódot, fennáll a veszélye, hogy extra szóközök jelennek meg a fájlban. Ezek az ártatlannak tűnő terek WordPress-hibává válhatnak Figyelmeztetés: nem módosítható a fejléc információ – a fejléceket már elküldte.

Ebben az útmutatóban megvizsgáltuk, hogyan lehet kijavítani az ilyen hibákat, és webhelye most ismét a várt módon működik. További WordPress oktatóanyagok itt találhatók.

Szerző

Elena professzionális műszaki végzettséggel rendelkezik ezen a területen információs technológiákés tapasztalat a programozásban különböző nyelveken különböző platformokonés rendszerek. Több mint 10 évet szentelt a webiparnak, különféle CMS-ekkel dolgozott, mint például a Drupal, a Joomla, a Magento és természetesen napjaink legnépszerűbb tartalomkezelő rendszerével, a WordPress-szel. Cikkei mindig technikailag ellenőrzöttek és pontosak, legyen szó a WordPress áttekintéséről vagy a VPS-szerver beállításáról szóló utasításokról.

Egy nap, amikor felkerestem a blogomat, meglepődve találtam egy érthetetlen hibát, valami ilyesmit:

Figyelmeztetés: A fejlécadatok nem módosíthatók – a fejléceket már elküldte (a kimenet a /xxxxxxxx/wp-config.php:1 címről indult)

Ráadásul nincs mód belépni az adminisztrációs panelre. Azonnal elmentem megnézni, hogy mi a baj a wp-config.php fájllal. Minden a helyén volt, az adatbázis jelszavai helyesek. Azt hittem, megint feltörték)) De ismét nem észlelték a vandalizmus jeleit az FTP-n. A legfurcsább (ez végül teljesen összezavart), hogy csak a www nélküli oldal linkje nem működött, vagy fordítva (nem emlékszem pontosan). Elkezdtem felvenni a kapcsolatot a szolgáltatóval, megnéztem a beállításokat a domain adminisztrációs panelén - általában sok mindent.

De sokkal egyszerűbbnek bizonyult - a konfigurációs fájl elején volt egy bizonyos BOM— jelölő (aláírás) az UTF-8 fájlokhoz. Ezért jelentkezett a fenti hiba. Ahhoz, hogy ez ne forduljon elő Önnel, először olyan kódszerkesztőket kell használnia, amelyek vagy egyáltalán nem teszik fel ezt az aláírást, vagy a fájl mentése előtt tisztázzák, hogy szükség van-e rá.

Egyes szövegszerkesztőkben előfordulhat, hogy a beállítások között megtalálható az „Unicode aláírás (BOM) szerepeltetése”, „Bájtsorrend hozzáadása” vagy hasonló jelölőnégyzet. Ellenkező esetben, anélkül, hogy egy adott programban le lehetne tiltani egy szükségtelen opciót, nem ajánlott használni. A speciális fórumokon találhat egy listát a jókról szövegszerkesztők, Ez - Notepad2, PSPad, UnicEdit, Notepad++. Általában sokat írnak az utóbbiról, ez elég erős eszköz. Valahogy véletlenül készleten volt a számítógépemen. alternatív szerkesztőAkelpad— Hasonló feladatokra használom.

Egy másik szempont, amit érdemes megjegyezni, hogy az anyagjegyzék-hiba nem csak a wp-config.php fájlban fordulhat elő. Sőt, ha a figyelmeztetések megjelenítésének lehetősége le van tiltva, akkor egyáltalán nem fogja látni, hol csúszott be a probléma. Ilyen esetekben (és minden másban) egy egyszerű használatát javasolnám szkript fájlok kereséséhez a BOM segítségével. Jurij Belotickijt meg kell köszönni a fejlesztésért.

A szkript használata nagyon egyszerű.

  1. szükséges fájl
  2. Ráöntöd FTP szerver a gyökérkönyvtárba. Ha a WordPress nincs telepítve az oldal gyökerébe (hanem például a blog mappába), akkor a szkriptet abba a könyvtárba kell helyezni, ahol a WordPress található, és onnan kell futtatni.
  3. Az indítás nagyon egyszerű - csak írja be böngészője címsorába a http://your.site/find_bom.php hivatkozást

Ennek eredményeként megjelenik a hibás fájlok listája. Egyébként a munka felgyorsítása érdekében a szkript csak azokat a könyvtárakat ellenőrzi, ahová a felhasználók általában fájlokat töltenek fel - root, /wp-content/themes és /wp-content/plugins.

Alapvetően ennyi. Milyen nehéz volt ezt megoldani egyszerű probléma. Remélem, segítettem egy kicsit a tapasztalataimmal, és most, amikor megjelenik a megfelelő figyelmeztetés, tudni fogja, mit kell tennie :) Ha egyik vagy másik fájlt nem tudja kijavítani a BOM-ból, egyszerűen feltölthet egy újat a WordPress terjesztés.

P.S. Az ifjú házasok számára megfelelő helyszín a bankettek szervezése és az esküvővel kapcsolatos minden kérdés megoldása.



Kapcsolódó kiadványok